【发布时间】:2014-03-16 17:29:11
【问题描述】:
我正在执行一段代码,我需要从数据库中检索一组用户并对他们做一些事情。非常简单的场景。
问题是虽然我使用了 while(rs.next()) ,但当 rs.next() 达到 null 时,我的程序会尝试继续使用 while 子句中的代码并以 Null 异常退出。
为什么会这样?我的代码中是否有一些我无法弄清楚的问题?
请注意rs 绝不是null。一开始在控制台打印rs 的所有内容,但当它到达末尾时,它返回空异常。
try {
String sql = "select distinct userid from userinfo";
stmt1 = conn.createStatement();
try (ResultSet rs = stmt1.executeQuery(sql)) {
while (rs.next()) {
String mentionsIDs = (rs.getString("mentions")).trim();
try{
if (!mentionsIDs.isEmpty() ){
System.out.println(mentionsIDs);
String[] arr = mentionsIDs.split("\\s+");
if(isNumeric(arr[0])){
System.out.println(arr[0]);
sources.add(Long.parseLong(arr[0]));
}
}
}
catch(Exception ex){
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
}
rs.close();
}
感谢任何帮助。
【问题讨论】:
-
您只返回不同的用户 ID 并阅读
mentions列?(rs.getString("mentions")).trim()可以抛出NullPointerExceptionisrs.getString("mentions")is null -
你完全正确!!非常感谢!!
-
rs.close()不再需要,因为try(...)。