我正在使用 Postgres JDBC 驱动程序 (postgresql-42.2.5.jar) 和 PostgreSQL 10.6 RDBMS。
我有一个结果集,其中 3 列属于类型money
(在数据库级别)。我有一个结果集元数据对象。
当列类型为money 时,驱动程序的getColumnType() 方法为money
列返回8。
我查了一下,值 8 表示双倍。
但是从数据库返回的值类似于
$1,312,536.00
or say 1,312,536.00
。
因此,当我尝试在该列索引上调用 rs.getObject() 时,会出现以下错误:
org.postgresql.util.PSQLException: Bad value for type double: 1,312,536.00
at org.postgresql.jdbc.PgResultSet.toDouble(PgResultSet.java:2934)
at org.postgresql.jdbc.PgResultSet.getDouble(PgResultSet.java:2323)
at org.postgresql.jdbc.PgResultSet.internalGetObject(PgResultSet.java:194)
at org.postgresql.jdbc.PgResultSet.getObject(PgResultSet.java:2572)
at org.apache.commons.dbcp2.DelegatingResultSet.getObject(DelegatingResultSet.java:733)
at org.apache.commons.dbcp2.DelegatingResultSet.getObject(DelegatingResultSet.java:733)
因此,在涉及货币类型时,驱动程序似乎无法与自己的数据库对话。
这对我来说似乎是一个错误。
似乎 PG-JDBC,他们为此打开了一个错误
https://github.com/pgjdbc/pgjdbc/issues/100
但由于缺乏响应而不是修复它,他们关闭了它。
任何想法如何解决这个问题?
这真的是一个错误还是我错过了什么?