当我在 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 Debug模式下转到下一个语句的键)时,该语句都会被执行,所以当我进入 while 循环时,该语句被执行三次,导致实际结果集指针本身移动到最后一个之后位置。
我在 Debug模式下使用 res.next() 的原因是为了检查它是否返回 true。
在 Debug模式下添加表达式时需要小心。不仅是上面的语句,还包括诸如预增量或后增量之类的语句或任何将为变量分配新值的表达式,因为调试表达式实际上作用于我们程序中的实际变量。
关于java - 调用 rs.next() 或 rs.previous() 时结果集指针的增量不均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341756/