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);

 

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