我有这样的查询 - 从tbl中选择*其中...和colname in(2,3,4)
当我使用Java中的PreparedStatement准备查询(...'colname in(?)')时,我应该调用什么setter方法来设置这些整数?整数在int数组中可用,大小各不相同。如果重要,数据库是MySQL,并且有问题的列是int类型。
答案 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连接器实现。