Java Postgresql驱动程序是否支持数组数据类型,获取NullPointerException
我使用的是Postgres9.3,我得到的Java数据库驱动程序如下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"
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中引入的
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中引入的org.postgresql.jdbc4.Jdbc4ResultSet.getObject(int,Class)函数尚未实现。
我正在使用。您知道为什么会出现此错误吗?我回滚了我的解决方案,您可以检查我的错误在哪里maybe@YCF_L是的,使用更新的版本,如42.2.2(eg)感谢@MarkrotVeel现在使用我的解决方案,它为我提供了org.postgresql.util.psqleException:转换为类[Ljava.lang.String;从2003年起不受支持