结果集没有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.first) {
} else {
system.out.println("No raw or resultSet is empty");
}
因为如果ResultSet没有raw,那么ResultSet。第一个返回false。
你通常会这样做:
while ( resultSet.next() ) {
// Read the next item
resultSet.getString("columnName");
}
如果要报告一个空集,请添加一个变量来计算读取的项。如果您只需要阅读一个项目,那么您的代码就足够了。
我认为检查结果集最简单的方法是通过包org.apache.commons.collections.CollectionUtils下的CollectionUtils
if(CollectionUtils.isNotEmpty(resultList)){
/**
* do some stuff
*/
}
这将检查null以及空结果集条件。
有关更详细的信息,您可以参考下面的文档。 CollectionUtils
这是正确的,最初ResultSet的游标指向第一行之前,如果第一次调用next()返回false,则ResultSet中没有数据。
如果您使用这个方法,您可能必须立即调用beforeFirst()来重置它,因为它现在已经将自己定位到第一行之后。
然而,值得注意的是,Seifer下面的回答是这个问题的一个更优雅的解决方案。
我创建了以下方法来检查ResultSet是否为空。
public static boolean resultSetIsEmpty(ResultSet rs){
try {
// We point the last row
rs.last();
int rsRows=rs.getRow(); // get last row number
if (rsRows == 0) {
return true;
}
// It is necessary to back to top the pointer, so we can see all rows in our ResultSet object.
rs.beforeFirst();
return false;
}catch(SQLException ex){
return true;
}
}
有以下几点考虑是非常重要的:
CallableStatement对象必须设置为让to ResultSet对象走在末尾并返回到顶部。
TYPE_SCROLL_SENSITIVE: ResultSet对象可以移到末尾并返回顶部。进一步可以捕捉最后的变化。
CONCUR_READ_ONLY:可以读取ResultSet对象数据,但不能更新。
CallableStatement proc = dbconex.prepareCall(select, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);