将Java中的createArrayOf与PostgreSQL一起使用时,结果集为空
我正在尝试使用ID数组查询产品表。下面是该方法的一个片段:将Java中的createArrayOf与PostgreSQL一起使用时,结果集为空,java,arrays,postgresql,prepared-statement,sqlconnection,Java,Arrays,Postgresql,Prepared Statement,Sqlconnection,我正在尝试使用ID数组查询产品表。下面是该方法的一个片段: PreparedStatement statement = connection .prepareStatement("SELECT * FROM product WHERE id IN (?)"); System.out.println(ids /*ArrayList<Integer>*/); //prints [3] Array array = connection.createArray
PreparedStatement statement = connection
.prepareStatement("SELECT * FROM product WHERE id IN (?)");
System.out.println(ids /*ArrayList<Integer>*/); //prints [3]
Array array = connection.createArrayOf("INTEGER", ids.toArray());
// Array array = connection.createArrayOf("INTEGER", new Integer[]{1, 2, 3}); //<-----tried this too
statement.setArray(1, array);
ResultSet results = statement.executeQuery();
while (results.next()) {
System.out.println("does not print this");
Product product = new Product(0);
product.setId(results.getInt("id"));
products.add(product);
}
return products;
表product包含ID为1、2和3的3行。产品返回空值。知道为什么吗
谢谢
编辑
据
右侧是带括号的标量表达式列表
例1,2,3
所以,我想问题变成了:如何从我的ArrayList中获取标量表达式列表?要检查查询的WHERE子句,元素是否在数组中,您可以使用任何一个。就你而言:
SELECT * FROM product WHERE id = ANY(?)
这不是填充SQL集的方式。您必须提供适当数量的?标记并手动为其设置值。SQL数组是一种完全不同的野兽。好吧,这就是我不这么做的原因。现在,我该怎么做呢?有任何示例、片段、资源、指针、信号吗?感谢您尝试过:“从id=ANY的产品中选择*并使用psql客户端进行查询吗?@SimonSchiff回答这个问题,获得您的分数