问题描述:
在List的add方法添加对象时都是最后的一条记录的重复,出错代码如下:
public List<Bus> find(Bus condition) {
Connection connect=DaoFactory.getConnect();
ResultSet rs;
Statement stmt;
List<Bus> AuthorityListByName=new ArrayList<Bus>();
String sql="SELECT * from bus";
//使用Connection来创建一个Statment对象
try {
stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
//condition=new Bus();
condition.setBusCode(rs.getString("busCode"));
condition.setBusLicense(rs.getString("busLicense"));
condition.setBusType(rs.getString("busType"));
condition.setBusStatus(rs.getString("busStatus"));
condition.setStartTime(rs.getString("startTime"));
AuthorityListByName.add(condition);
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return AuthorityListByName;
}
效果:出错原因:
自始至终,condition只new了一个对象,无论AuthorityListByName循环了多少次,始终用了condition这一个对象,那个AuthorityListByName.add(condition);这一句其实加的都是同一个对象,那么当然里面始终只有一个对象了。
解决方法:
每次循环重新new一个condition对象 condition=new Bus();
(即去掉上图代码中注释部分)