在Java中,为什么ResultSet不允许你运行next()超过1次



看下面的代码:

ResultSet results=preparedStmt.executeQuery();
while (results.next()){
   String subject=results.getString(1);
   System.out.println(subject +" 1st time");
}
while (results.next()){
   String subject=results.getString(1);             
   System.out.println(subject+ " 2nd time");
}

为什么系统只在第一次输出结果,&第二次不打印结果吗?

如果我们想运行results.next()超过1次,那么什么是正确的编码方式?

您没有运行.next()一次。一个while循环将多次运行它,直到到达结果集的末尾。当到达第二个while循环时,结果集中没有剩下任何东西可以遍历:您处于它的末尾。您必须再次运行查询以重新开始或生成一个可滚动的结果集:

       Statement stmt = con.createStatement(
                                      ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
       ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
       // rs will be scrollable, will not show changes made by others,
       // and will be updatable

和call rs.first()

while( rs.next() )将把'current row'游标移动到集合的末尾。

默认情况下,ResultSet是只读的,只能转发,所以一旦你到达结束,你需要调用first()重新开始。注意:first()是一个可选的方法,您的驱动程序可能不支持。

相关内容

  • 没有找到相关文章

最新更新