wxvc_collection
列数据类型为int[]
,t_hot_hub_operation_item
为表名。
fun main() {
val connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sage-dev", "postgres", "123456")
val sql = "INSERT INTO t_hot_hub_operation_item (wxvc_collection) VALUES (?)"
val statement = connection.prepareStatement(sql)
val array = connection.createArrayOf("int4", arrayOf(listOf(1, 2, 3)))
statement.setArray(1, array)
statement.executeUpdate()
}
我引用了这个答案,但它似乎已经过时了。
运行代码时的错误信息如下:
Exception in thread "main" org.postgresql.util.PSQLException: ERROR: invalid input syntax for type integer: "[1, 2, 3]"
in location:unnamed portal parameter $1 = '...'
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:152)
at com.sage.server.TestKt.main(Test.kt:16)
注意:尽量不要更改SQL语句,因为我实际使用的是mybatis框架,不支持修改SQL语句
我认为您传递的是嵌套数组 (arrayOf(listOf(1, 2, 3))) 而不是平面数组。
PostgreSQL 需要一个单维 int[]。
试试这个:
val array = connection.createArrayOf("int4", arrayOf(1, 2, 3))