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

标签 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条记录。 这里会出现什么问题?

最佳答案

我找到原因了。

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

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

在 Debug模式下添加表达式时需要小心。不仅是上面的语句,还包括诸如预增量或后增量之类的语句或任何将为变量分配新值的表达式,因为调试表达式实际上作用于我们程序中的实际变量。

关于java - 调用 rs.next() 或 rs.previous() 时结果集指针的增量不均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341756/

相关文章:

php - 引用 - 这个错误在 PHP 中意味着什么?

java - GlassFish SHA-256 摘要认证

java - 如何使用 java 检查数据库连接是关闭还是打开?

java - CDI拦截器: How to intercept `this` calls or get the current proxy object?

java - YCSB项目安装JDBC驱动

java - 编写自定义 Eclipse 调试器

c# - 发生异常后在 Visual Studio 调试器中继续

java - JDBC 驱动程序和终端类路径

scala - ScalikeJDBC 结果字符串中的列顺序错误

java - 如何强制具体类以具体实例作为参数?