3

私はこのようなクエリを持っています-select*from tbl where ... and colname in(2,3,4)

JavaでPreparedStatementを使用してクエリ(...'colname in(?)')を準備する場合、これらの整数を設定するためにどのセッターメソッドを呼び出す必要がありますか?整数はint配列で使用でき、サイズは異なります。重要な場合、データベースはMySQLであり、問​​題の列はint型です。

4

2 に答える 2

3

別の構文を使用できます

WHERE colname = ANY (?)

そして、PreparedStatement.setArray()を呼び出します。パラメータとしてjava.sql.Arrayのインスタンスを指定する必要があります。INの代わりにANYの利点の1つは、SQL構文エラーを発生させずに空の配列を渡すことができることです。

于 2008-12-26T08:08:42.140 に答える
2

ラーニングの説明への補遺として:

配列の作成は難しい場合があります。

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 コネクタ実装で機能するとは限りません。

于 2009-01-16T01:31:28.683 に答える