繁体   English   中英

在JDBC / PostgreSQL中使用SQL数组类型更新ResultSet

[英]Updating ResultSets with SQL Array types in JDBC / PostgreSQL

我正在尝试使用PostgreSQL 8.4和JDBC4驱动程序的SQL数组类型。

我的专栏定义如下:

nicknames           CHARACTER VARYING(255)[]    NOT NULL

而我正试图这样更新它:

row.updateArray("nicknames", 
    connection.createArrayOf("CHARACTER VARYING", p.getNicknames().toArray()));

p.getNicknames()返回List<String>

但我看到了:

org.postgresql.util.PSQLException:无法找到提供名称CHARACTER VARYING的服务器数组类型。 at org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf(AbstractJdbc4Connection.java:67)at org.postgresql.jdbc4.Jdbc4Connection.createArrayOf(Jdbc4Connection.java:21)

不幸的是,数组类型似乎没有很好的文档记录 - 我没有找到确切的提到如何在PostgreSQL任何地方这样做:(

有任何想法吗?

将“CHARACTER VARYING”更改为“varchar”。 命令行psql客户端接受类型名称“CHARACTER VARYING”,但JDBC驱动程序不接受。

org.postgresql.jdbc2.TypeInfoCache的源包含已接受的类型名称列表。

考虑createArrayOf()部分模糊措辞:

typeName是特定于数据库的名称,可以是此数据库支持的内置类型,用户定义类型或标准SQL类型的名称。

我总是假设驱动程序实现者将短语“特定于数据库的名称”和“由此数据库支持”解释为“接受您想要的任何内容”。 但也许您可以将其作为针对Postgres JDBC驱动程序的错误提交。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM