我使用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();
但是最后一行失败了NullPointerException
,因为urlData为空
为什么这样,Postgresql不支持Array,教程确实说不支持Mysql
https://docs.oracle.com/javase/tutorial/jdbc/basics/array.html
或者它只是null,因为没有特定行的网址数据?
在回答中建议使用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)
答案 0 :(得分:2)
我想是因为它只是null,因为没有特定字段的网址数据?
要解决您的问题,您可以使用:
Array urlData = rs.getArray("urls");
String[] urls = urlData != null ? (String[]) urlData.getArray() : null;//or a default value