多参数"IN"预准备语句



我试图弄清楚如何使用PreparedStatement为SQL查询中的IN子句设置多个参数。

例如,在这个SQL语句中,我将拥有不定数量的?

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

我在中读到过PreparedStatement IN子句替代项?

然而,我不知道如何将它应用于上面的SQL语句。

没有标准的方法来处理这个问题。

在SQL Server中,可以在存储过程中使用表值参数,并传递表中的国家/地区,然后在联接中使用它。

我还看到过这样的情况:传入逗号分隔的列表,然后由函数解析为表,然后在联接中使用。

如果您的国家/地区是分隔列表中的标准ISO代码,如"#US#UK#DE#NL#",您可以使用一个相当简单的结构,如:

select * from ifs_db where img_hub = ? and ? LIKE '%#' + country + '#%'

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());
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();

相关内容

  • 没有找到相关文章

最新更新