【问题标题】:Uneven increment of resultset pointer upon calling rs.next() or rs.previous()调用 rs.next() 或 rs.previous() 时结果集指针的不均匀增量
【发布时间】:2012-11-12 10:10:44
【问题描述】:

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

【问题讨论】:

  • "但我确定表中有 2 条记录" - 太确定了。相信调试器;怀疑自己。也许您没有连接到正确的数据库。许多其他事情可能是错误的。

标签: java debugging jdbc resultset database


【解决方案1】:

我找到了原因。

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

我之所以在调试模式下使用 res.next() 是为了检查它是否返回 true。

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

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多