在网上看到许多判断ResultSet结果集的记录数是否为0的方法都需要结果集next移动,虽然有的说不移动,使用isBeforeFirst函数(获取光标是否位于此 ResultSet
对象的第一行之前),但是我认为光标初始时就是在第一行之前,所以没有意义。
考虑到如果next移动了,需要后退,ResultSet则要设置
TYPE_SCROLL_INSENSITIVE
该常量指示可滚动但通常不受 ResultSet
底层数据更改影响的 ResultSet
对象的类型。
或
TYPE_SCROLL_SENSITIVE
该常量指示可滚动并且通常受 ResultSet
底层数据更改影响的 ResultSet
对象的类型。
挺麻烦,后来看到一个折衷的解决方案,希望对大家有帮助:
if ( rs.next())
{
// 记录数不为0
}
else
{
//记录数为0
}
如果判断后需要依次读取,则可以参考下面代码
if(rs.next())
{
do {
str = rs.getString(1);
...
}while(rs.next());
}
else
{
System.out.println("暂无记录");
}