看看这段代码:
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次,那么什么是正确的代码方式?
答案 0 :(得分:3)
您没有运行.next()一次。单个while循环将多次运行,直到到达结果集的末尾。当达到第二个while循环时,结果集中没有任何内容可以继续:你就在它的末尾。您必须再次运行查询才能重新开始或生成scrollable resultset:
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
并致电rs.first()
答案 1 :(得分:1)
while( rs.next() )
会将“当前行”光标前进到集合的末尾。
默认情况下,ResultSet
仅为只读和转发,因此一旦到达最后,您需要先调用first()重新开始。注意:first()
是一种可选方法,您的驱动程序可能不支持。