结果集没有hasNext方法。我想检查resultSet是否有任何值
这条路对吗
if (!resultSet.next() ) {
System.out.println("no data");
}
结果集没有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.isAfterLast() ) {
System.out.println("No data");
}
isAfterLast()对于空结果集也返回false,但由于游标无论如何都在第一行之前,这个方法似乎更清楚。
假设您正在使用一个新返回的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());
}
ResultSet rs = rs.executeQuery();
if(rs.next())
{
rs = rs.executeQuery();
while(rs.next())
{
//do code part
}
}
else
{
//else if no result set
}
最好重新执行查询,因为当我们调用if(rs.next()){....} ResultSet的第一行将被执行,之后在while(rs.next()){....}我们将从下一行得到结果。因此,我认为在if内部重新执行查询是更好的选择。