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 条记录。这里会有什么问题?
我找到了原因。
我有一个调试表达式作为res.next();
所以每次我按 F6(在 eclipse 调试模式下转到下一个语句的键)时,该语句都会被执行,所以当我进入 while 循环时,该语句已执行三次,导致实际结果集指针本身移动到最后一个位置之后。
我在调试模式下使用 res.next() 的原因是检查它是否返回 true。
在调试模式下添加表达式时,我们需要谨慎。不仅是上述语句,还有诸如前增量或后增量或任何会为变量分配新值的表达式之类的语句,因为调试表达式实际上作用于我们在程序中的实际变量中。