从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出去呢? 展开
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出去呢? 展开
2个回答
展开全部
每次产生一个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);
}
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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面回答正确 因为你没有把 new 对象放在循环内 所以总是原来的对象往LIST里放 当然覆盖了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询