3

我有这样的查询 - select * from tbl where ... and colname in (2,3,4)

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

4

2 回答 2

3

你可以使用另一种语法

WHERE colname = ANY (?)

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

于 2008-12-26T08:08:42.140 回答
2

作为学习解释的附录:

创建一个数组可能很棘手。

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

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

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

于 2009-01-16T01:31:28.683 回答