日期:2014-05-20  浏览次数:20568 次

求解释 jdbc的东西 不明白为什么
List commonlist=new ArrayList();
  dbc = new DBConnection();
ps = dbc.getConnection().prepareStatement(csql);
rs = ps.executeQuery();
List allI=new ArrayList();
while(rs.next()){ //注意这里 我先把所有的name放到list里面
String i = rs.getString("name");
allI.add(i);
}
for(int a=0;a<allI.size();a++){ //遍历list得到每一个name值
String name=(String) allI.get(a);
System.out.println(name);
String huiyuanid = "select auto_id from member where  
  content_type=1 and content_user='"+name+"'";
dbc = new DBConnection();
ps = dbc.getConnection().prepareStatement(huiyuanid);
rs = ps.executeQuery();
while(rs.next()){
int memberId= rs.getInt(1);
commonlist.add(memberId);//把最后得到的id放入又一个list中
}
}
当这些语句执行完毕后 我得到 commonlist.size()是240【数据库就是240条数据】
 我将上面的程序改为如下:
  List commonlist=new ArrayList();
  dbc = new DBConnection();
ps = dbc.getConnection().prepareStatement(csql);
rs = ps.executeQuery();
while(rs.next()){ //1
String name = rs.getString("name") String huiyuanid = "select auto_id from member where content_type=1 and
  content_user='"+name+"'";
dbc = new DBConnection();
ps = dbc.getConnection().prepareStatement(huiyuanid);
rs = ps.executeQuery();
while(rs.next()){ //2
int memberId= rs.getInt(1);
commonlist.add(memberId);//3  
}
}//4
这样得到的commonlist大小只是1 我调试了下 大概是秩序:1-2-3.完毕后又由3倒回去即:3-2-1.最后就到4
而我预期的应该是1-2-3,3-2-1.又1-2-3,3-2-1.这样反复直到240数据都得到。
  请问各位前辈们 我哪里理解错了,请指教!谢谢

------解决方案--------------------
你这里面只添加了一个name,上面使用List添加,也就说吧所有的name都添加进去了,因为你的name不同,只放一个name,肯定是查出来的只有一个啦
------解决方案--------------------
重复用ps rs。。。

------解决方案--------------------
rs 被重新赋值了
------解决方案--------------------
你后面那俩个while嵌套导致rs错了
------解决方案--------------------
探讨

rs 被重新赋值了