-1

setString は指定された位置に値を挿入できることを知っています。今度はデータベースに渡すために jsp ページからチェックボックスの値を取得したいと考えています。

チェックボックスの変数は、1 つ以上の値を処理できるため、文字列配列として定義しました。

これは、クラスの変数として定義した方法です。

public String[] rep;

これは、私のサーブレットが doPost メソッドでこのパラメーターを取得する方法です。

String[] rep = request.getParameterValues("rep");

これは、preparedStatement クエリの DAO クラスの行です。

st.setString(3, exam.rep);

しかし、それはこのエラーが表示されます: タイプ PreparedStatement のメソッド setString(int, String) は、引数 (int, String[]) には適用されません

クエリ全体

public static void  add(Exam exam) throws ClassNotFoundException, SQLException {
    Connection cnx;
    cnx = Connect.getConnection();
    String req = "insert into examen values (?,?,?)";
    PreparedStatement st = cnx.prepareStatement(req);
    st.setString(1, exam.titre);
    st.setString(2, exam.question);
    st.setString(3, exam.rep);
    st.executeUpdate();
}
4

1 に答える 1

0

SQL クエリを表示していただけると助かります。準備済みステートメントは、配列ではなく単一の値を取ります。最初のパラメーターをクエリのインデックスとして定義し、?対応する2番目のパラメーターに置き換えます。このようなものがニーズに合うかもしれません。

String stmt = "INSERT INTO abc (some_field) VALUES (?);";
PreparedStatement ps = conn.prepareStatement(stmt);
String formatted = String.join(",", items);
ps.setString(3, formatted);

準備されたステートメントを使用して配列値を保存する場合は、DB から読み取るときに文字列を配列に変換できるように、何らかの方法で文字列をフォーマットする必要があります。

于 2019-02-27T13:47:29.760 に答える