gpt4 book ai didi

java - 在 Java 中使用 createArrayOf 和 PostgreSQL 时,结果集为空

转载 作者:行者123 更新时间:2023-12-04 13:33:07 33 4
gpt4 key购买 nike

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

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包含 3 行 id s 1、2 和 3。 products返回空值。知道为什么吗?
谢谢
编辑
根据 section 9.23.1

The right-hand side is a parenthesized list of scalar expressions


示例 (1,2,3)所以,我认为问题变成了:如何从我的 ArrayList 中获取标量表达式列表?

最佳答案

要在查询的 WHERE 子句中检查元素是否在数组中,您可以使用 ANY。在你的情况下:

SELECT * FROM product WHERE id = ANY(?)

关于java - 在 Java 中使用 createArrayOf 和 PostgreSQL 时,结果集为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63785624/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com