从MySQL读取数据,以List方式传出

代码如下:publicListselectDb(){Listlist=newArrayList();InfoForminfo=newInfoForm();Statemen... 代码如下:
public List selectDb() {
List list=new ArrayList();
InfoForm info=new InfoForm();
Statement sm=null;
ResultSet rs=null;
Connection con=null;
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost/newdb","root","rxsoft");
sm=con.createStatement();
rs=sm.executeQuery("select * from user");
while(rs.next()){
info.setUserID(rs.getInt("userid"));
info.setUserName(rs.getString("username")); info.setPassWord(rs.getString("password"));
list.add(info);
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException ex){
ex.printStackTrace();
}finally{
try{
if (rs!=null){
rs.close();
rs=null;
}
if(sm!=null){
sm.close();
sm=null;
}
if(con!=null){
con.close();
con=null;
}
}catch(Exception ee){}
}
return list;
}
这个方法导致后一条信息覆盖前一条信息,所以传出的总是最后一条信息,请问,怎么把没一条LIST都传出去!
要是我把InfoForm info=new InfoForm(); 放在while(rs.next()){...}循环体内,那又怎么把每一个都return出去呢?
展开
 我来答
百度网友70ae8e86ac
2007-12-13 · TA获得超过1304个赞
知道小有建树答主
回答量:815
采纳率:0%
帮助的人:1101万
展开全部
每次产生一个info对象,不使用一个info对象。
while(rs.next()){
InfoForm info=new InfoForm();
info.setUserID(rs.getInt("userid"));
info.setUserName(rs.getString("username")); info.setPassWord(rs.getString("password"));
list.add(info);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
55117942
2007-12-13 · TA获得超过233个赞
知道答主
回答量:189
采纳率:0%
帮助的人:0
展开全部
上面回答正确 因为你没有把 new 对象放在循环内 所以总是原来的对象往LIST里放 当然覆盖了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式