私はこのようなクエリを持っています-select*from tbl where ... and colname in(2,3,4)
JavaでPreparedStatementを使用してクエリ(...'colname in(?)')を準備する場合、これらの整数を設定するためにどのセッターメソッドを呼び出す必要がありますか?整数はint配列で使用でき、サイズは異なります。重要な場合、データベースはMySQLであり、問題の列はint型です。
私はこのようなクエリを持っています-select*from tbl where ... and colname in(2,3,4)
JavaでPreparedStatementを使用してクエリ(...'colname in(?)')を準備する場合、これらの整数を設定するためにどのセッターメソッドを呼び出す必要がありますか?整数はint配列で使用でき、サイズは異なります。重要な場合、データベースはMySQLであり、問題の列はint型です。
別の構文を使用できます
WHERE colname = ANY (?)
そして、PreparedStatement.setArray()を呼び出します。パラメータとしてjava.sql.Arrayのインスタンスを指定する必要があります。INの代わりにANYの利点の1つは、SQL構文エラーを発生させずに空の配列を渡すことができることです。
ラーニングの説明への補遺として:
配列の作成は難しい場合があります。
JDK 1.6 以降の Connection には、creator メソッドがあります。 http://download.java.net/jdk7/docs/api/java/sql/Connection.html#createArrayOf(java.lang.String,%20java.lang.Object[])
JDK1.6 は最新の安定版リリースであるため、JDBC ドライバーがサポートしていない可能性があります。
独自の Array 実装を試して作成することはできますが、すべての JDBC コネクタ実装で機能するとは限りません。