while(rs.next)只執行一次

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章