我想知道如何检查结果集是否返回了一些记录,如下所示,
while(((ResultSet) rs).next()){
((ResultSet) rs).previous();
return true;
}
但我不能这样做,因为结果集类型是TYPE_FORWARD_ONLY,是否有任何方便的API可用于我的情况? wasNull肯定不是正确的,谢谢你的任何指示!
即使
答案 0 :(得分:4)
if(!resultSet.isBeforeFirst()){
System.out.println("resultset contin no rows");
}
如果光标位于第一行之前,isBeforeFirst()返回true;如果光标位于任何其他位置或结果集不包含行
,则返回false答案 1 :(得分:1)
答案是,你做不到。 SQL行集的性质:当你到达目的地时会通知你,但是在你尝试获取下一条记录并且没有记录之前你不知道。这就是它的方式。
答案 2 :(得分:0)
如果您对rs.next()
的第一次调用成功并且返回true,则表示返回了一些记录。
答案 3 :(得分:0)
因为在你对ResultSet的状态进行rs.next()
移动之前你无法知道,你可能会:
在创建ResultSet或
count
语句
执行第一个rs.next()
或rs.first()
并使用其内容,以防您的设置不为空
这样:
boolean state = rs.first(); // or rs.next();
if (state == false)
System.out.println("empty");
else {
System.out.println("not empty");
while (state) {
System.out.println(rs.getInt(1));
// use your row ...
state = rs.next();
}
}