本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接
问题:怎么检查Java的ResultSet里面有没有值?
Resultset没有hasNext方法。我想要检查resultSet里有没有值
这是正确的方法吗?
if (!resultSet.next() ) {
System.out.println("no data");
}
回答一
正确,ResultSet的指针刚开始是指向第一行之前的,如果第一次调用next()返回false,那么ResultSet中就没有数据。
如果你使用这个方法,你必须在重置后立即调用beforeFirst(),因为它的指针现在已经将定位在第一行之后。
然而,应该注意的是,下面Seifer的回答是对这个问题的一个更优雅的解决方案。
回答二
假设你正在处理一个新返回的ResultSet,它的指针指向的是第一行之前,检查它的一种更简单的方法是调用isBeforeFirst()。这样可以避免读取数据时产生的back-track。
如文档中所述,如果游标不在第一个记录之前,或者说ResultSet中没有记录,那就返回false。
if (!resultSet.isBeforeFirst()) {
system . out。println("No data");
}
回答三
你总是可以先把指针后移,然后再做一次检查
if (!resultSet.next() ) {
System.out.println("no data");
} else {
do {
//statement(s)
} while (resultSet.next());
}
回答四
You would usually do something like this: 你总是可以像下面那样做的:
while ( resultSet.next() ) {
//读取下一项
resultSet.getString("columnName");
}
如果你想要报告一个空集合,加一个变量去统计已经读取到的项的数量。如果你只是想读取一个项的话,那么你的代码已经是正确的啦。
回答五
我相信这个是非常简单易读的了:
if (res.next()) {
do {
// 成功返回,做正确的事情
} while (res.next());
} else {
// 没有结果返回,给用户提示警告
}
文章翻译自Stack Overflow:stackoverflow.com/questions/8…