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

JDBC中输出数据库数据的问题
全部代码我就不截出来了,关键代码如下:
private final static String QUERYALL = "select * from employee";

public List<User> queryALL() {
List<User> list = new ArrayList<User>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try{
conn = dbConnFactroy.getSQLConnection().getSQLConnection();
ps = conn.prepareStatement(QUERYALL);
rs = ps.executeQuery();

while(rs.next()){
User user = new User();
user.setUsername(rs.getString("e_username"));
user.setPassword(rs.getString("e_password"));
user.setName(rs.getString("e_name"));
user.setAge(rs.getInt("e_age"));
user.setSex(rs.getInt("e_sex"));
Date d = stringToDate(rs.getString("e_birthdate"), dateFormat);
user.setBirthdate(d);
user.setPhone(rs.getString("e_phone"));
user.setE_mail(rs.getString("e_mail"));
list.add(user);

}
}catch(SQLException e){
e.printStackTrace();
System.out.println("查找失败");
}finally{
close(rs,ps,conn);
}
return list;
}
//主函数测试
public static void main(String[] args) {
db_implement imp = new db_implement();

List list = imp.queryALL();
Iterator it = list.iterator();

while(it.hasNext()){
User user = (User)it.next();
System.out.println(
user.getUsername() + "\t"
+ user.getPassword() + "\t"
+ user.getName() + "\t"
+ user.getAge() + "\t"
+ user.getSex() + "\t"
+ user.getBirthdate() + "\t"
+ user.getPhone() + "\t"
+ user.getE_mail());
}
}

问题是这样的,我数据库里面有28行数据,执行上面的主函数后,显示28行数据,但这28行数据都是同一行数据(最后一行的数据),我想知道哪里错了,正确的输出应该是每行都不同的,小弟初学java,求各位师兄朋友帮帮忙!

------解决方案--------------------
如果真想楼主所说的那样,那么代码应该是


while(rs.next()){ 
User user = new User();//这一句放在循环外边就会是最后一条数据,如果放在循环里边,应该是不可能是最后一条数据,楼主自己再检查一下吧.在循环加一个System.out.println(rs.getString("e_username"));试试有什么结果,先检查看是读取的时候错了,还是在循环显示的时候错了.
user.setUsername(rs.getString("e_username"));
user.setPassword(rs.getString("e_password"));
user.setName(rs.getString("e_name"));
user.setAge(rs.getInt("e_age"));
user.setSex(rs.getInt("e_sex"));
Date d = stringToDate(rs.getString("e_birthdate"), dateFormat);
user.setBirthdate(d);
user.setPhone(rs.getString("e_phone")); 
user.setE_mail(rs.getString("e_mail"));
list.add(user);

}

------解决方案--------------------
探讨
引用:
没看出什么问题,打点日志看

怎样打,求教?