【发布时间】:2013-07-31 17:49:36
【问题描述】:
使用 PreparedStatement 构建如下所示的查询...
SELECT * FROM table1 WHERE column1 IN ('foo', 'bar')
...不知道 IN 语句中的字符串数
构造一个类似...的字符串
"'foo', 'bar'"
...并使用 ps.setString() 传递它会导致:
"\'foo\', \'bar\'"
这可能是一件好事,但它使这种解决我的问题的方法毫无用处。
关于如何将未知数量的值传递到 JDBC PreparedStatement 而不动态创建查询字符串的任何想法(此查询位于一个文件中以便于重用,我想保留那样)?
【问题讨论】:
-
您可以使用
Array对象。SELECT * FROM table1 WHERE column1 IN ?与PreparedStatement#setArray(1, anArrayObject); -
@SotiriosDelimanolis 取决于 JDBC 驱动程序是否支持
setArray。
标签: java mysql jdbc prepared-statement