【发布时间】:2013-07-24 09:54:44
【问题描述】:
我已经查看并且无法找到解决我遇到的以下挑战的答案。它 看起来很简单,但我一直无法解决它。
我有一个ArrayList 类型为Long -> ArrayList<Long> 的记录ID。我想用
此记录 ID 列表用于从另一个表中选择行。到目前为止,一切都很好。现在上
挑战……
a) 我正在使用准备好的语句从使用ArrayList 作为输入的表中选择数据
为了这。
selectPS = dbConnection.prepareStatement("select columnA from tableA where id in ?");
关于上面的问题 - 应该如何定义参数?以上似乎不正确
ArrayList 类型参数。
b) 在为准备好的参数设置值时,我也遇到了问题
陈述。没有设置 ArrayList 类型值的方法,我看不到其他可行的方法
选项。
---> selectPS.set?????(1, arraylistParameter);
ResultSet rs = selectPS.executeQuery();
非常感谢您为我提供的任何帮助或指导。
谢谢。
【问题讨论】:
-
你可以尝试传递一个数组吗?,PreparedStatement#setArray()?您需要先使用Connection#createArrayOf() 创建一个数组。列出了某些方式here。
-
我会为数组中的每个元素动态创建一个带有
?的字符串,使用每个值调用setLong方法,每次递增索引。 -
@Thomas Grady CBIP 你的数据库是什么?如果是Oracle,则在
IN子句中将不支持超过1000 条记录。您必须编写INNER JOIN 子句更多信息-stackoverflow.com/questions/4722220/… -
@Prabhaker... 我们正在使用 MySQL。也就是说,挑战不是 sql,而是正确设置我准备好的语句以使用数组列表。感谢您转发信息。
-
大家好。我接受了通过 arraylist 循环并为每个调用设置 Long 参数的建议,我有我需要的东西。虽然这个选项似乎有更多的开销,但读取的行数是几千,这是为了解决生产问题。
标签: java arraylist prepared-statement