【问题标题】:Binding parameters as array postgres java将参数绑定为数组 postgres java
【发布时间】:2017-11-03 01:30:32
【问题描述】:

我正在尝试绑定一个准备好的语句参数,它是一个数组 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 中的位置

【问题讨论】:

    标签: java postgresql


    【解决方案1】:

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

    WHERE id = ANY (?)
    

    然后你可以通过setArray()传递一个数组


    不相关,但是:如果您使用的是 PreparedStament,则应该通过它传递 all 值。将输入连接到 SQL 字符串是一个真的,非常糟糕的主意。

    【讨论】:

    • 我该怎么做才能从 txt 更新 bukl,这是最好的方法??
    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 2014-10-03
    • 2016-12-06
    • 2013-04-20
    • 2023-03-29
    • 2019-06-07
    • 2010-10-08
    相关资源
    最近更新 更多