如何在Java中准备SQL查询时设置整数列表

时间:2008-12-26 07:41:56

标签: java mysql prepared-statement

我有这样的查询 - 从tbl中选择*其中...和colname in(2,3,4)

当我使用Java中的PreparedStatement准备查询(...'colname in(?)')时,我应该调用什么setter方法来设置这些整数?整数在int数组中可用,大小各不相同。如果重要,数据库是MySQL,并且有问题的列是int类型。

2 个答案:

答案 0 :(得分:3)

您可以使用其他语法

WHERE colname = ANY (?)

并调用PreparedStatement.setArray()。您必须提供java.sql.Array的实例作为参数.ANY的一个优点而不是IN,您可以传递空数组而不会导致SQL语法错误。

答案 1 :(得分:2)

作为学习解释的附录:

创建数组可能很棘手。

在JDK 1.6及更高版本的Connection中有一个创建者方法。 http://download.java.net/jdk7/docs/api/java/sql/Connection.html#createArrayOf(java.lang.String,%20java.lang.Object[])

由于JDK1.6是最新的稳定版本,因此您的JDBC驱动程序可能不支持它。

您可以尝试创建自己的Array实现,但这可能不适用于所有JDBC连接器实现。