今天在jdbc编程时遇到了while(rs.next)只执行一次的情况
int i=0;
int j=0;
while(rs.next()){
i++;
}
rs.beforeFirst();
while (rs.next()) {
j++;
ResultSet foodrs = getFoodByid(rs.getString(1));
foodrs.next();
list.add(getRsMap(foodrs));
}
System.out.println("i:"+i+";j:"+j);
输出结果: 可以看到rs中有两个结果集,但是再第二次next时只循环了一次。
后来查阅相关资料得出在一个连接中,创建第二个ResultSet会将第一个给覆盖掉。
解决方法:
1.将第一次rs的结果遍历到list中(由于本人的第一次rs仅仅是获取id值所以数组或list足矣,若数据复杂,则可以用list<map>。)再通过list查询获得rs,便不会出现此情况了。
int j=0;
while (rs.next()) {
idlist.add(rs.getString(1));
}
for (int i = 0; i < idlist.size(); i++) {
j++;
rs=getFoodByid(idlist.get(i));
rs.next();
list.add(getRsMap(rs));
}
System.out.println("j:"+j);