1

INを使用して、SQL クエリの句に複数のパラメータを設定する方法を見つけようとしていましたPreparedStatement

たとえば、この SQL ステートメントでは、無数の?.

select * from ifs_db where img_hub = ? and country IN (multiple ?)

これについては、 PreparedStatement IN 句の代替案で読んだことがあります か?

ただし、上記の SQL ステートメントに適用する方法がわかりません。

4

3 に答える 3

2

これを処理する標準的な方法はありません。

SQL Server では、ストアド プロシージャでテーブル値パラメーターを使用し、テーブルで国を渡し、それを結合で使用できます。

コンマ区切りのリストが渡され、関数によってテーブルに解析され、結合で使用されるケースも見てきました。

国が '#US#UK#DE#NL#' のように区切られたリストの標準 ISO コードである場合、次のようなかなり単純な構成を使用できます。

select * from ifs_db where img_hub = ? and ? LIKE '%#' + country + '#%'
于 2012-03-20T16:47:16.047 に答える
1

Sormula は、任意のデータ型 (カスタム型であっても) に対して機能します。この例では、簡単にするために int を使用しています。

ArrayList<Integer> partNumbers = new ArrayList<Integer>();
partNumbers.add(999);
partNumbers.add(777);
partNumbers.add(1234);

// set up
Database database = new Database(getConnection());
Table<Inventory> inventoryTable = database.getTable(Inventory.class);

ArrayListSelectOperation<Inventory> operation =
    new ArrayListSelectOperation<Inventory>(inventoryTable, "partNumberIn");

// show results
for (Inventory inventory: operation.selectAll(partNumbers))
    System.out.println(inventory.getPartNumber());
于 2012-03-21T12:17:41.660 に答える
0
You could use setArray method as mentioned in the javadoc below:

http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#setArray(int, java.sql.Array)

Code:
PreparedStatement statement = connection.prepareStatement("Select * from    test where field in (?)");
Array array = statement.getConnection().createArrayOf("VARCHAR", new    Object[]{"AA1", "BB2","CC3"});
statement.setArray(1, array);
ResultSet rs = statement.executeQuery();
于 2016-06-09T19:38:58.663 に答える