我的数据库只有一个字段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