今天在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);