我正在尝试绑定一个准备好的语句参数,它是一个数组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中的位置
答案 0 :(得分:0)
IN
运算符不支持数组,您需要使用ANY
WHERE id = ANY (?)
然后你可以通过setArray()
不相关,但是:如果您使用PreparedStament
,则应通过所有值。将输入连接到SQL字符串是真的,非常糟糕。