【问题标题】:null ResultSet exception空结果集异常
【发布时间】:2011-10-04 10:38:27
【问题描述】:

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

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

table1 包括这样的行

  • row1 电影名1
  • row2 电影名2
  • 第三行
  • row4 电影名称2

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

【问题讨论】:

  • 您的表格中有哪些列?描述你的桌子。
  • 哪个引用为空?实际上,您不需要在 String 引用上调用 .toString()

标签: java oracle nullpointerexception resultset


【解决方案1】:

好吧,看起来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);
    }
}

【讨论】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        也许你得到了空指针,因为 row3 有空值,而你正在尝试“toString”-it

        【讨论】:

          【解决方案5】:

          如果它是您发布的第一行引发错误,我的猜测是变量 s 为空(未初始化),但由于您没有准确告诉我们代码的哪一行引发错误,因此很难告诉。

          【讨论】:

            猜你喜欢
            • 2014-11-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多