2011-10-04 123 views
1

我想连接到oracle并获取一些记录。null ResultSet异常

java.sql.ResultSet r = s.executeQuery("Select * from table1"); 
while (r.next()==true) { 
    System.out.println(r.getString("column1").toString()); 
     } 

table1中包括这样的行

  • ROW1 movieName1
  • 2行movieName2
  • ROW3
  • ROW4 movieName2

我得到“在线程异常 “主要的” java .lang.NullPointerException“执行时出错以上代码。我该如何解决它?

+0

表中的列是什么?描述你的桌子。 – Vaandu

+0

哪个引用为空?实际上你不需要在String引用上调用'.toString()'。 – Gandalf

回答

1

也许你会得到空指针,因为ROW3具有空值和你想“的toString”

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); 
    } 
} 
+0

谢谢你工作 – user951487

1

如果您发布抛出错误我的猜测是,变量s为空(未初始化),但因为你不知道第一线我们究竟是哪一行代码引发了这个错误很难说。

2
  1. r.getString("column1")返回值可能为空,所以你会得到在随后toString()方法调用NullPointerException。在使用返回值之前,您必须检查空值。

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

2

你不会说在你的代码中究竟发生了什么异常。最可能的原因是snullr.getString("column1")返回null