当我在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条记录。 这会是什么问题?
答案 0 :(得分:1)
我找到了原因。
我的调试表达式为res.next();
所以每当我按下F6(键在eclipse调试模式下转到下一个语句)时,语句就会被执行所以当我来循环时语句被执行三次,导致实际的结果集指针本身移动到最后位置。
我在调试模式下使用res.next()的原因是检查它是否返回true。
当我们在调试模式下添加表达式时,我们需要谨慎。不仅是上面的语句,还包括预增量或后增量或任何可以为变量赋值的表达式,因为调试表达式实际上在我们程序中的实际变量中起作用。