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

这条路对吗

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

当前回答

我认为检查结果集最简单的方法是通过包org.apache.commons.collections.CollectionUtils下的CollectionUtils

if(CollectionUtils.isNotEmpty(resultList)){
  /**
  * do some stuff
  */
}

这将检查null以及空结果集条件。

有关更详细的信息,您可以参考下面的文档。 CollectionUtils

其他回答

if(resultSet.first) {

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

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

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

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

为什么不使用rs.getRow()?

int getRow()
           throws SQLException
Retrieves the current row number. The first row is number 1, the second number 2, and so on.
Note:Support for the getRow method is optional for ResultSets with a result set type of TYPE_FORWARD_ONLY

Returns:
the current row number; 0 if there is no current row
Throws:
SQLException - if a database access error occurs or this method is called on a closed result set
SQLFeatureNotSupportedException - if the JDBC driver does not support this method
Since:
1.2

对我来说,检查“if (rs.getRow() != 0)”似乎工作得很好。

通过使用resultSet.next(),您可以轻松地获得结果,无论resultSet是否包含任何值

ResultSet resultSet = preparedStatement.executeQuery();
if(resultSet.next())
 //resultSet contain some values
else
 // empty resultSet

我一直试图将当前行设置为第一个索引(处理主键)。我建议

if(rs.absolute(1)){
    System.out.println("We have data");
} else {
    System.out.println("No data");
}

填充ResultSet时,它指向第一行之前。当将它设置为第一行(由rs.absolute(1)表示)时,它将返回true,表示它成功地放置在第一行,如果该行不存在则返回false。我们可以推断

for(int i=1; rs.absolute(i); i++){
    //Code
}

它将当前行设置为位置I,如果该行不存在,将失败。这是另一种方法

while(rs.next()){
    //Code
}