如何在Java中移动光标时检查结果集是否返回了记录

时间:2011-07-17 06:24:59

标签: java jdbc resultset

我想知道如何检查结果集是否返回了一些记录,如下所示,

while(((ResultSet) rs).next()){
    ((ResultSet) rs).previous();
    return true;
}

但我不能这样做,因为结果集类型是TYPE_FORWARD_ONLY,是否有任何方便的API可用于我的情况? wasNull肯定不是正确的,谢谢你的任何指示!

即使

4 个答案:

答案 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()移动之前你无法知道,你可能会:

  1. 在创建ResultSet或

  2. 之前运行count语句
  3. 执行第一个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();
                }
            }