结果集没有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==null ) {
    System.out.println("no data");
}

根据最可行的答案,建议使用“isBeforeFirst()”。如果你没有“只转发类型”,这不是最好的解决方案。

有一个叫做".first()"的方法。要得到完全相同的结果,这就不那么过分了。您检查“结果集”中是否有内容,但没有移动光标。

文档声明:“(…)如果结果集中没有行则为false”。

if(rs.first()){
    //do stuff      
}

您也可以只调用isBeforeFirst()来测试是否有任何行返回而不移动游标,然后正常进行。- SnakeDoc 14年9月2日19:00

但是,"isBeforeFirst()"和"first()"是有区别的。首先,如果对“仅向前”类型的结果集执行操作,则会生成异常。

比较这两个throw部分: http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html isBeforeFirst () http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html第()

好的,基本上这意味着你应该使用“isBeforeFirst”,只要你有一个“仅转发”类型。否则,使用“first()”就不会那么夸张了。

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

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

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

 

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

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
}

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

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

    do {
     //statement(s)
    } while (resultSet.next());
}