Java Postgresql驱动程序是否支持数组数据类型,获取NullPointerException

Java Postgresql驱动程序是否支持数组数据类型,获取NullPointerException,java,postgresql,jdbc,Java,Postgresql,Jdbc,我使用的是Postgres9.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"

我使用的是Postgres9.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();
但最后一行失败,出现了
NullPointerException
,因为urlData为null

这是为什么呢?Postgresql不支持数组吗?教程中没有说明Mysql不支持数组

或者它只是空的,因为没有特定行的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)

我想是因为它只是空的,因为没有特定字段的URL数据?

要解决您的问题,您可以使用:

Array urlData = rs.getArray("urls");
String[] urls = urlData != null ? (String[]) urlData.getArray() : null;//or a default value

我想是因为它只是空的,因为没有特定字段的URL数据?

要解决您的问题,您可以使用:

Array urlData = rs.getArray("urls");
String[] urls = urlData != null ? (String[]) urlData.getArray() : null;//or a default value

也许我会再试一次,但getObjects()失败,出现上述异常,不受支持driver@PaulTaylor是的,我已经尝试了我的第二个解决方案,getObject的实现似乎还没有完成。是的,但是你可以用第一个解决你的问题。如果你是正确的,它只是失败了,因为没有一行的数据,现在正在工作。也许我会再试一次,但getObjects()失败,出现上述异常,不受支持driver@PaulTaylor是的,我已经尝试了我的第二个解决方案,getObject的实现似乎还没有完成。是的,但是你可以用第一个解决你的问题。如果你是正确的,它只是失败了,因为没有一行的数据,现在正在工作。您使用的是哪个版本的PostgreSQL JDBC驱动程序?链接教程只指出对MySQL和Java DB的支持不足,因为它们也是Oracle产品。这并不意味着所有其他JDBC驱动程序都支持它们,尽管。<代码>抽象MaoDoRror < /Cord>建议您使用旧版本的驱动程序(在java 7 /JDBC 4.1中引入的 GETObjult<代码>方法),考虑升级到PostgreSQL JDBC驱动程序的更新版本。@ MARKROTTEVEL建议使用GETObjt,然后删除它,因为当我尝试使用<代码> String时URL=rs.getObject(“URL”,字符串[].class)我收到一个错误
org.postgresql.jdbc4.Jdbc4ResultSet.getObject(int,Class)函数还没有实现。
我正在使用的是,你知道为什么会出现这个错误吗?我回滚了我的解决方案,你可以检查哪里是我的错误maybe@YCF_L是的,使用更新的版本,比如42.2.2(eg)谢谢@MarkrotVeel现在我的解决方案它给了我
org.postgresql.util.psqleException:转换到类[Ljava.lang.String;从2003年起不受支持
您使用的是哪个版本的PostgreSQL JDBC驱动程序?链接教程只指出对MySQL和Java DB的支持不足,因为它们也是Oracle产品。这并不意味着所有其他JDBC驱动程序都支持它们,尽管
AbstractMethodError
表明您支持使用旧版本的驱动程序(在java 7/JDBC 4.1中引入的 GETObjult<代码>方法),考虑升级到PostgreSQL JDBC驱动程序的更新版本。@ MARKROTTEVEL建议使用GETObjt,然后删除它,因为当我尝试使用<代码> String [] URL= R.GETObjor(“URL”)、String []类时;我收到一个错误
org.postgresql.jdbc4.Jdbc4ResultSet.getObject(int,Class)函数尚未实现。
我正在使用。您知道为什么会出现此错误吗?我回滚了我的解决方案,您可以检查我的错误在哪里maybe@YCF_L是的,使用更新的版本,如42.2.2(eg)感谢@MarkrotVeel现在使用我的解决方案,它为我提供了
org.postgresql.util.psqleException:转换为类[Ljava.lang.String;从2003年起不受支持