日期:2014-05-17  浏览次数:20714 次

第一次发贴,大家好,问个list的问题
我的数据库只有一个字段username 里面的值为1 2 3 4 5 6 7 8
但是为什么我用list保存 输出的却是 8 8 8 8 8 8 8 8 呢 求解 =。=

package dao;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class Cha{

public List cha()
{
List<Userbean> list=new ArrayList<Userbean>();
Connection conn=null;
Statement stmt=null;
String sqlstr;
ResultSet rs=null;
DB db=new DB();
Userbean user=new Userbean();
conn=db.getConn();
try{
stmt = conn.createStatement();
sqlstr = "select * from test";
  rs=stmt.executeQuery(sqlstr);
  while(rs.next())
  {  
  user.setUsername(rs.getString(1));
  list.add(user);
  }
}
catch(SQLException e2)
  {
  System.out.println("数据库存在异常!查操作时出现错误");
  System.out.println(e2.toString());
  }
finally
  {
  try
  {
  if(rs != null) rs.close();
  if(stmt != null) stmt.close();
  if(conn!= null) conn.close();
  }
  catch(SQLException e)
  {
  System.out.println("数据库存在异常!查操作时出现错误");
  }  
  }
return list;
}
}

------解决方案--------------------
while(rs.next())
{
UserBean user = new UserBean();
user.setUsername(rs.getString(1));
list.add(user);
}

你不new的话,user都是指向一个实例。
------解决方案--------------------
Java code

Userbean user=new Userbean();
conn=db.getConn();
try{
stmt = conn.createStatement();
sqlstr = "select * from test";
  rs=stmt.executeQuery(sqlstr);
  while(rs.next())
  {   
  user.setUsername(rs.getString(1));
  list.add(user);
  }

------解决方案--------------------
楼上说的很对 把Userbean user=new Userbean();

 while(rs.next())
{
user.setUsername(rs.getString(1));
list.add(user);
}
放在while语句中 自己好好理解下吧 看下list的API