全部代码我就不截出来了,关键代码如下:
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,求各位师兄朋友帮帮忙!

解决方案 »

  1.   

    试试通过数据库字段序号得到数据吧,就像这样,以前用的时候都是使用的这个方法
    user.setUsername(rs.getString(1));
      

  2.   

    while(it.hasNext()){
    User user = (User)it.next();
    }
    这个迭代有问题
     当list里还有下一个user的时候,User user = (User)it.next();显示list第1个
     当list里还有下一个user的时候,User user = (User)it.next();还是显示list第1个
     当list里还有下一个user的时候,User user = (User)it.next();还是显示list第1个
     你可以看下你的list里user bean 数据是否一样
     不一样,做for循环
      

  3.   

    如果真想楼主所说的那样,那么代码应该是
    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);}
      

  4.   

    汗一个,comms_log,log4j都可以,最次可以System.out.println总会吧Log log...省略
    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();
    log.debug("list := "+list);
    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()); 
    }
    }