我想使用Java的postgresql jdbc4將一系列值插入到sql查詢中。java.sql.Connection createArrayOf()總是返回null
java.sql.Connection
指定要轉換成Object[]
一個java.sql.Array
方法:conn.createArrayOf(String typeName, Object[] elements)
唯一的問題是,不管我怎麼努力,它總是返回null。
public Array makeQueryBigintArray(Object[] values) throws SQLException {
Array result = conn.createArrayOf("bigint", values);
// "result" is null at this point, but shouldn't be
return result;
}
conn
通過工作javax.sql.DataSource
經由dataSource.getConnection()
檢索。 conn
適用於我們所有其他數據庫使用,但其createArrayOf()
方法始終返回null。
我根據this question嘗試了typeName的大寫「BIGINT」和小寫「bigint」,但都無濟於事。
當我挖掘調試器時,發現conn
是org.apache.commons.dbcp.PoolableConnection
包裝org.postgresql.jdbc4.Jdbc4Connection
。
如果該功能不被postgres/JDBC4支持,我期望調用它來拋出一個SQLException指示它不受支持。沒有例外被拋出。
任何線索爲什麼它返回null?
我該如何解決這個問題,否則,我該如何將一個數組或值列表傳遞給PreparedStatement
?
您是否正在使用最近的PostgreSQL的JDBC 4(!)驅動程序?它看起來像它已經實現:https://github.com/pgjdbc/pgjdbc/blob/master/org/postgresql/jdbc4/AbstractJdbc4Connection.java#L88(並且已經有幾年了) – 2014-12-19 07:33:31
你可以用' 「INT8」'? ''bigint''只是'「int8」的別名(但在這種情況下都應該使用它們)。 – pozs 2014-12-19 12:47:06
@MarkRotteveel我們使用的是隻包含最新PostgreSQL JDBC背後的2個版本的版本。也就是說,我們使用的是版本1002,而版本1004是截至12/19/14的最新版本。我有類似的想法,也許這是一個非常古老的想法,但它是最近的。 – 2014-12-22 18:01:09