0

当我在 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条记录。这里会有什么问题?

4

1 回答 1

1

我找到了原因。

我有一个调试表达式,res.next(); 所以每次按 F6(在 Eclipse 调试模式下转到下一个语句的键)时,该语句都会被执行,所以当我进入 while 循环时,该语句被执行了三次,导致实际结果集指针自身移动到最后一个位置之后。

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

我们在调试模式下添加表达式时需要谨慎。不仅是上面的语句,还有像 pre-increment 或 post-increment 这样的语句或任何可以为变量分配新值的表达式,因为调试表达式实际上作用于我们程序中的实际变量。

于 2012-11-12T10:18:29.920 回答