見てきたが、次の課題に対する答えを見つけることができませんでした。それはかなり簡単に思えますが、私はそれを解決することができませんでした。
タイプArrayList
-> ArrayList<Long>
のLong
のレコードIDがあります。このレコードIDのリストを使用して、別のテーブルから行を選択します。ここまでは順調ですね。今、挑戦に...
a)準備されたステートメントを使用して、ArrayList
を入力としてテーブルからデータを選択しています。
selectPS = dbConnection.prepareStatement("select columnA from tableA where id in ?");
上記に関する質問-パラメータはどのように定義する必要がありますか?上記はArrayList
型パラメーターに対しては正しくないようです。
b)準備されたステートメントのパラメーターの値を設定するときに問題が発生します。 ArrayList
型の値を設定する方法はなく、他に実行可能なオプションはありません。
---> selectPS.set?????(1, arraylistParameter);
ResultSet rs = selectPS.executeQuery();
あなたが私を設定することができる任意の助けや方向は大歓迎です。
ありがとうございました。
以下のjavadocに記載されているsetArray
メソッドを使用することもできます。
サンプルコード:
PreparedStatement pstmt =
conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", new Object[]{"1", "2","3"});
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();
ArrayListがある場合は、Array [Object]に変換します
ArrayList<String> list = new ArrayList<String>();
PreparedStatement pstmt =
conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", list.toArray());
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();