尝试插入长数组时出现 Postgresql 错误

Posted

技术标签:

【中文标题】尝试插入长数组时出现 Postgresql 错误【英文标题】:Postgresql error when trying to insert Long array 【发布时间】:2016-11-02 08:04:29 【问题描述】:

ArrayList temp2 = new ArrayList();

我正在用 long 填充这个数组列表。

当我尝试将其插入到 postgresql 中时,我使用以下内容:

UPDATE pb1plnitm SET parents_pb1plnitm_unid = ARRAY[?] WHERE pb1plnitm_unid = ?", temp2, xmlForm.getFieldValueLong("uniqueid"));

使用 JDBC 模板。但是当我尝试运行此代码时,它会在“ARRAY [?]”上出现错误。但是如果 temp2 是一个单一的数字,例如:1253214,它可以工作。有人有想法吗?

我的错误是:

PreparedStatementCallback;错误的 SQL 语法 [UPDATE pb1plnitm SET parents_pb1plnitm_unid = ARRAY[?] WHERE pb1plnitm_unid = ?];嵌套异常是 org.postgresql.util.PSQLException:无法推断用于 [Ljava.lang.Long; 实例的 SQL 类型。使用带有显式 Types 值的 setObject() 来指定要使用的类型。

【问题讨论】:

【参考方案1】:

如错误描述中所述,使用setObject()方法

例如:

Array sqlArray = conn.createArrayOf("text", anyArray);
    pstmt.setArray(1, sqlArray);
    pstmt.executeUpdate();

【讨论】:

您还需要删除array[?] 部分,只使用SET parents_pb1plnitm_unid = ?

以上是关于尝试插入长数组时出现 Postgresql 错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 if 语句创建函数时出现 Postgresql 语法错误

尝试从节点应用程序连接时出现 PostgreSQL 错误

尝试 PostgreSQL 主从 WAL 复制时出现“主 PostgreSQL 标识符与从属 PostgreSQL 标识符不匹配”错误

为啥插入子文档数组时出现“重复键错误”?

为啥插入子文档数组时出现“重复键错误”?

使用 JDBC 插入 PostgreSQL 时间类型时出错