【发布时间】:2011-12-17 09:57:23
【问题描述】:
我正在尝试在表中插入一个数组,但我需要将列表转换为 SQL Array 类型。我正在使用Connection#createArrayOf() 方法,但遇到异常。
我需要传递一个类型名称,但我不知道这是什么,我总是得到一个异常。该数组来自 VARCHAR。
如何解决这个插入数组?
代码
Object[] array = new Object[token.getCategories().size()];
array = token.getCategories().toArray();
pstmTokenInsert.setArray(1, conn.createArrayOf("VARCHAR", array));
堆栈跟踪
org.postgresql.util.PSQLException: Could not find array type for data type VARCHAR
at org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf(AbstractJdbc4Connection.java:73)
at org.postgresql.jdbc4.Jdbc4Connection.createArrayOf(Jdbc4Connection.java:21)
at org.apache.commons.dbcp.DelegatingConnection.createArrayOf(DelegatingConnection.java:560)
at br.ifsp.da.data.TokenDAO.insertTokens(TokenDAO.java:37)
at br.ifsp.da.data.ProcessedPageInserter.loopInsertion(ProcessedPageInserter.java:44)
at br.ifsp.da.data.ProcessedPageInserter.call(ProcessedPageInserter.java:27)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
【问题讨论】:
-
您使用的是 Oracle 吗? SQL 数组类型高度依赖于底层数据库。
-
你能发布异常的堆栈跟踪吗? :)
-
@kocko 我发布了堆栈跟踪。
-
@DaveNewton 9.0-801 用于 Java 的 PostgreSQL 驱动程序
标签: java sql arrays postgresql