怎么检查Java的ResultSet里面有没有值?| Java Debug 笔记

991 阅读2分钟

本文正在参加「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…