如果用rs.next()是可以判断是否有结果集,但这会造成cursor moved,因为我不是立即就获取结果集,而是中间隔了一段代码之后又在执行 for (int i = 0; rs.next(); i++) 如下
if (rs != null && rs.next() ) {
   ......这里有一段代码分割开来了
      for (int i = 0; rs.next(); i++) {
      ...获取结果集
      }
   .....
}
这样由于上述代码中的rs.next()执行了两次,就造成了cursor moved,这样就取不到第一行的数据而是只有从第二行开始的数据了.如果不用 rs.next() 来判断是否结果集中有数据,还有别的方法吗?这个问题究竟怎么解决?

解决方案 »

  1.   

    我现在增加了一条rs.previous(); 光标回归到第一行数据,就可以了,但有必要这么麻烦吗?
    if (rs != null && rs.next() ) {
       ......这里有一段代码分割开来了
          rs.previous();
          for (int i = 0; rs.next(); i++) {
          ...获取结果集
          }
       .....
    }
      

  2.   

    if (rs != null) {
       ......这里有一段代码分割开来了//不知道你这里是处理什么的?
          for (int i = 0; rs.next(); i++) {
          ...获取结果集
          }
       .....
    }这不行吗?是在不想,你只能再查询一次了。
      

  3.   


    我前面的代码是 rs != null && rs.next() 而不是 rs != null 注意这个rs.next()的执行会导致cursor moved,而我后面又要再次用到rs.next(),这样游标的位置就变了