调用rs.next()或rs.previous()时结果集指针的增量不均匀

时间:2012-11-12 10:10:44

标签: java debugging jdbc resultset database

当我在eclipse IDE中调试时调用res.next()时,我遇到了关于结果集指针移动的问题。

代码:

   query="Select * from emp"
    res=stmt.executeQuery(query);
    System.out.println("Statement executed");
    System.out.println("-----------------------");
    int count=0;
    while(res.next()){
    count++;
    //some useful code
    }

查询执行返回两条记录。所以我正常运行程序,while循环结束后计数值为2,这是期望的结果,但是当我尝试在eclipse中调试相同的代码时,while循环结束后计数值保持为0,这意味着控制不是进入while循环,但确定表中有2条记录。 这会是什么问题?

1 个答案:

答案 0 :(得分:1)

我找到了原因。

我的调试表达式为res.next(); 所以每当我按下F6(键在eclipse调试模式下转到下一个语句)时,语句就会被执行所以当我来循环时语句被执行三次,导致实际的结果集指针本身移动到最后位置。

我在调试模式下使用res.next()的原因是检查它是否返回true。

当我们在调试模式下添加表达式时,我们需要谨慎。不仅是上面的语句,还包括预增量或后增量或任何可以为变量赋值的表达式,因为调试表达式实际上在我们程序中的实际变量中起作用。