结果集没有hasNext方法。我想检查resultSet是否有任何值

这条路对吗

if (!resultSet.next() ) {
    System.out.println("no data");
} 

当前回答

if(resultSet.first) {

} else { 
    system.out.println("No raw or resultSet is empty");
}

因为如果ResultSet没有raw,那么ResultSet。第一个返回false。

其他回答

最好使用ResultSet.next()和do{…} while()语法。

“检查任何结果”调用ResultSet.next()将光标移动到第一行,因此使用do{…} while()语法来处理该行,同时继续处理循环返回的其余行。

通过这种方式,您可以检查任何结果,同时也可以处理返回的任何结果。

if(resultSet.next()) { // Checks for any results and moves cursor to first row,
    do { // Use 'do...while' to process the first row, while continuing to process remaining rows

    } while (resultSet.next());
}

提醒一句,

如果你使用的是org.springframework.jdbc.core.RowMapper 非常小心你是如何检查你的ResultSet是空的,因为 下面的语句适用于mapRow方法:

该方法不应该在ResultSet上调用next();它只应该映射当前行的值。<-来自文档

在这种情况下,你的支票可能会变成

resultSet.beforeFirst();
if (!resultSet.next() ) {
    System.out.println("no data");
} 
if(resultSet.first) {

} else { 
    system.out.println("No raw or resultSet is empty");
}

因为如果ResultSet没有raw,那么ResultSet。第一个返回false。

最好的方法是检查第一行,这样当您打算获取数据时就可以避免跳过一行的错误。类似于:if (!resultSet.first()) {System.out。println(没有数据);}

我相信这是一篇实用且易于阅读的文章。

        if (res.next()) {
            do {

                // successfully in. do the right things.

            } while (res.next());
        } else {
           // no results back. warn the user.
        }