绑定参数为数组postgres java

时间:2017-11-02 17:21:24

标签: java postgresql

我正在尝试绑定一个准备好的语句参数,它是一个数组PostgreSQL。这是一个示例查询:

prepareStatement("UPDATE " + emailsFromDb.get(i) +  " SET columne =testvalue '," + id + "' WHERE id IN (?)" );

我从txt文件值读取数据这是从txt读取的代码

Scanner inFile1 = new Scanner(new File("file.txt"));
while(inFile1.hasNext()) {
    sb.append(inFile1.nextLine());
}
String[] testArray = sb.toString().split(", ");

并在sql中准备数组

Array bulkarr=  connector.createArrayOf("INT", testArray);
pr.setArray(1, bulkarr);

pr.executeUpdate();

结果我有这个错误

2017-11-02 17:12:58 --ERROR-ApplicationErrorMessage : 
org.postgresql.util.PSQLException: ERROR: operator does not exist: integer = integer[]
  Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  Position: 106

我需要更新数组postgres中的位置

1 个答案:

答案 0 :(得分:0)

IN运算符不支持数组,您需要使用ANY

WHERE id = ANY (?)

然后你可以通过setArray()

传递一个数组

不相关,但是:如果您使用PreparedStament,则应通过所有值。将输入连接到SQL字符串是真的,非常糟糕。