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

这条路对吗

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

当前回答

假设您正在使用一个新返回的ResultSet,其游标指向第一行之前,一个更简单的检查方法是调用isBeforeFirst()。这避免了在读取数据时必须回溯。

正如文档中解释的那样,如果游标不在第一条记录之前,或者结果集中没有行,则返回false。

if (!resultSet.isBeforeFirst() ) {    
    System.out.println("No data"); 
} 

 

其他回答

if (!resultSet.isAfterLast() ) {    
System.out.println("No data"); 
} 

isAfterLast()对于空结果集也返回false,但由于游标无论如何都在第一行之前,这个方法似乎更清楚。

提醒一句,

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

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

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

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

你总是可以在前面做下一个,只做一个后循环检查

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

    do {
     //statement(s)
    } while (resultSet.next());
}
if (resultSet==null ) {
    System.out.println("no data");
}
if(resultSet.first) {

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

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