【发布时间】:2012-11-21 15:13:40
【问题描述】:
SELECT * FROM tableName WHERE id IN ?
我希望将 PreparedStatement 的 IN 参数设置为 int[]。例如,一个整数
{1, 2, 3, 4} 的数组将在查询中变为 IN (1,2,3,4)。
有没有一种简单的方法可以使用 PreparedStatement 的方法来实现此功能,或者我必须通过循环遍历数组来动态地将 IN 参数创建为字符串?
我想像 #setString(int parameterIndex, String x) 类似的东西,但当然是一个 int 数组。
【问题讨论】:
-
我不认为它是这样工作的。我认为您需要找到一种不同的语法,其中有多个?并设置每个的值。不过,这个想法很酷。
-
您将不得不编写自己的方法。例如stackoverflow.com/a/1916391/738746,您可以重复使用。请注意,arguments 不是
ints 的数组,而是Objects 的数组。 -
我正要建议做你刚才提到的:通过循环遍历数组来动态构建查询。如果您想要更方便的东西,请使用 JPA 2(您可以在其中将集合分配给查询参数)。
-
很高兴找到@BheshGurung。由于我的问题与此重复,我投票关闭它。 (不过,我并没有删除它,因为我觉得我的问题的标题对于有同样问题的未来程序员来说更易于搜索)。
-
把另一道题的题目改一下,然后把这道题删掉怎么样?
标签: java mysql arrays jdbc prepared-statement