看下面的代码:
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()
是一个可选的方法,您的驱动程序可能不支持。