Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java中的createArrayOf与PostgreSQL一起使用时,结果集为空_Java_Arrays_Postgresql_Prepared Statement_Sqlconnection - Fatal编程技术网

将Java中的createArrayOf与PostgreSQL一起使用时,结果集为空

将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

我正在尝试使用ID数组查询产品表。下面是该方法的一个片段:

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回答这个问题,获得您的分数