PostgreSQL 和 JDBC 使用 setArray 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”
Posted
技术标签:
【中文标题】PostgreSQL 和 JDBC 使用 setArray 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”【英文标题】:PostgreSQL & JDBC set array of ints using `setArray` throw an exception "cannot cast type integer[] to integer" 【发布时间】:2018-04-29 07:39:34 【问题描述】:如何在 JDBC 中设置整数数组(用 setArray
为 in 子句准备语句?
String query = "SELECT * FROM table WHERE id IN (?)";
// other things.
// ArrayList<Integer> some_ids;
preparedStatement.setArray(1, conn.createArrayOf("INTEGER", some_ids.toArray()));
它会编译,但执行会从 Postgres 中返回。
ERROR: cannot cast type integer[] to integer
【问题讨论】:
【参考方案1】:在 PostgreSQL 中你必须使用= ANY(?)
而不是IN (?)
"SELECT * FROM table WHERE id = ANY(?)";
看看这个:9.21.3. ANY/SOME (array)
【讨论】:
以上是关于PostgreSQL 和 JDBC 使用 setArray 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”的主要内容,如果未能解决你的问题,请参考以下文章
无论是不是使用 UTF8 编码,Postgresql/JDBC 都会失败
PostgreSQL 和 JDBC 使用 setArray 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”
PostgreSQL JDBC 和 Android - NullPointerException
带有 PostgreSQL 和 Pentaho 的 JDBC 驱动程序
如何使用 jdbc/spring-jdbc 不使用 PGInterval 对 PostgreSQL 区间数据类型进行操作?