null ResultSet异常

时间:2011-10-04 10:38:28

标签: 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());  
      }

table1包含那些行

  • row1 movieName1
  • row2 movieName2
  • row3
  • row4 movieName2

当我执行上面的代码时,我得到“线程中的异常”主“java.lang.NullPointerException”错误。我该如何解决?

5 个答案:

答案 0 :(得分:3)

看起来好像column1没有一行的值...所以getString()返回一个空引用,然后你调用toString() - 引导到例外。当您拨打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);
    }
}

答案 1 :(得分:2)

  1. r.getString("column1")的返回值可能为null,因此您将在后续NullPointerException方法调用中获得toString()。在使用返回值之前,您必须检查空值。

  2. 您无需在此处拨打toString()getString方法已经返回一个字符串。

答案 2 :(得分:2)

您没有说明代码中的确切位置发生了异常。最可能的原因是snullr.getString("column1")返回null

答案 3 :(得分:1)

也许你得到nullpointer因为row3有空值而你正试图“toString”-it

答案 4 :(得分:1)

如果它发布的第一行抛出了错误,我的猜测就是变量s为null(未初始化),但是因为你没有告诉我们你的代码究竟是什么行引发了错误很难告诉。