【发布时间】:2018-06-16 17:49:08
【问题描述】:
我使用的是 Postgres 9.3,我得到了这样的 Java 数据库驱动程序
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
System.err.println("Couldn't load org.postgresql.Driver");
System.exit(1);
}
然后我做:
Array urlData = rs.getArray("urls");
String[] urls = (String[]) urlData.getArray();
但由于 urlData 为空,最后一行以 NullPointerException 失败
这是为什么,是不是Postgresql不支持Array,教程中说Mysql不支持
https://docs.oracle.com/javase/tutorial/jdbc/basics/array.html
或者它只是空,因为没有特定行的 url 数据?
尝试使用答案中建议的getObject 失败
Exception in thread "main" java.lang.AbstractMethodError: Method org/postgresql/jdbc4/Jdbc4ResultSet.getObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; is abstract
at org.postgresql.jdbc4.Jdbc4ResultSet.getObject(Jdbc4ResultSet.java)
at com.jthink.jthinksearch.index.indexer.discogs.ArtistIndex.documentFromResultSet(ArtistIndex.java:209)
at com.jthink.jthinksearch.index.indexer.discogs.ArtistIndex.indexData(ArtistIndex.java:176)
at com.jthink.jthinksearch.index.indexer.IndexBuilder.buildDatabaseIndex(IndexBuilder.java:226)
at com.jthink.jthinksearch.index.indexer.IndexBuilder.buildIndex(IndexBuilder.java:151)
at com.jthink.jthinksearch.index.indexer.IndexBuilder.main(IndexBuilder.java:119)
【问题讨论】:
-
您使用的是什么版本的 PostgreSQL JDBC 驱动程序?
-
链接教程只指出缺乏对 MySQL 和 Java DB 的支持,因为它们也是 Oracle 产品。这并不意味着所有其他 JDBC 驱动程序都支持它们,尽管 PostgreSQL driver does support arrays.
AbstractMethodError建议您使用的是旧版本的驱动程序(您尝试的getObject方法是在 Java 7 / JDBC 4.1 中引入的),请考虑升级到更新版本的 PostgreSQL JDBC 驱动程序。 -
@MarkRotteveel 我建议使用 getObject 然后我删除了它,因为当我尝试使用
String[] urls = rs.getObject("urls", String[].class);时出现错误The org.postgresql.jdbc4.Jdbc4ResultSet.getObject (int, Class <T>) function is not yet implemented.我正在使用 mvnrepository.com/artifact/postgresql/postgresql/… 你知道为什么会出现这个错误请?我回滚了我的解决方案,您可以检查我的错误可能在哪里 -
@YCF_L 是的,使用更新的版本,比如版本 42.2.2(例如 mvnrepository.com/artifact/org.postgresql/postgresql/42.2.2)
-
谢谢@MarkRotteveel 现在我的解决方案给了我
org.postgresql.util.PSQLException: conversion to class [Ljava.lang.String; from 2 003 not supported
标签: java postgresql jdbc