Java 空结果集异常

Java 空结果集异常,java,oracle,nullpointerexception,resultset,Java,Oracle,Nullpointerexception,Resultset,我想连接到oracle并获取一些记录 java.sql.ResultSet r = s.executeQuery("Select * from table1"); while (r.next()==true) { System.out.println(r.getString("column1").toString()); } 表1包括类似的行 第1行movieName1 第2排电影短片2 第3行 第4行movieName2 当我执行上述代码时,我得到了“线程中的异常

我想连接到oracle并获取一些记录

java.sql.ResultSet r = s.executeQuery("Select * from table1");
while (r.next()==true) {
    System.out.println(r.getString("column1").toString());  
      }
表1包括类似的行

  • 第1行movieName1
  • 第2排电影短片2
  • 第3行
  • 第4行movieName2

当我执行上述代码时,我得到了“线程中的异常”main“java.lang.NullPointerException”错误。我怎样才能修好它

可能是因为第3行的值为null,而您正试图“toString”所以您得到了null指针,它看起来像是
column1
没有一行的值。。。因此,
getString()
返回一个空引用,然后调用
toString()
on-导致异常。当您调用
getString()
时,
toString()
调用毫无意义,因此您可以将其重写为:

while (r.next()) {
    System.out.println(r.getString("column1"));  
}
然后将改为打印
null
。如果要避免这种情况,请使用:

while (r.next()) {
    String name = r.getString("column1");
    if (name != null) {
        System.out.println(name);
    }
}

如果是您发布的第一行抛出错误,我的猜测是变量s为null(未初始化),但是由于您没有确切地告诉我们代码的哪行抛出错误,因此很难判断

  • r.getString(“column1”)
    的返回值可能为null,因此在随后的
    toString()
    方法调用中,您将得到一个
    NullPointerException
    。在使用返回值之前,必须检查空值

  • 您不需要在此处调用
    toString()
    getString
    方法已返回字符串


  • 您没有说异常发生在代码中的确切位置。最可能的原因是
    s
    null
    r.getString(“column1”)
    返回
    null

    表中的列是什么?描述您的表。哪个引用为空?实际上,您不需要对字符串引用调用
    .toString()