public List bankSelect() {
    List list = new ArrayList();
   
    bank a = new bank();
    
    try {
     ConnBean c = new ConnBean();
        dbConn = c.conn();
        stmt = dbConn.createStatement();
     String sql = "select * from tb_client_bank ";
      ResultSet rs = stmt.executeQuery(sql);
      while (rs.next()) {
     a.setid(Integer.parseInt(rs.getString(1)));
        a.set_bank_name(rs.getString(2));
     a.set_bank_bz(rs.getString(3));  
    
     list.add(a);
      }
      
    }
    catch (SQLException e) {
     e.printStackTrace();
    }
    
    return list;
  }
bank是我的实体类。上层servlet调用这个方法的时候会把list加到request对象里以便页面输出
假如库里有4条数据吧。我这个方法现在的结果是吧最后一条数据输出了4遍。。而不是每条数据遍历输出。
高手指点下怎么遍历呢???
还是说用实体类的话就没法达到这个目的?
大虾指点啊~~~~~~~~~

解决方案 »

  1.   

    public List bankSelect() {
      List list = new ArrayList();
        
      
        
      try {
      ConnBean c = new ConnBean();
      dbConn = c.conn();
      stmt = dbConn.createStatement();
      String sql = "select * from tb_client_bank ";
      ResultSet rs = stmt.executeQuery(sql);
      while (rs.next()) {
      bank a = new bank();
      a.setid(Integer.parseInt(rs.getString(1)));
      a.set_bank_name(rs.getString(2));
      a.set_bank_bz(rs.getString(3));   
      
      list.add(a);
      }
        
      }
      catch (SQLException e) {
      e.printStackTrace();
      }
        
      return list;
      }这样就O了, 你那样只有a一个对象,当然就出现你那个结果了
      

  2.   


    通俗点说吧 相当于你给一个对象赋值了四次 你说这个对象现在的值是什么(当然是最后一次的值了)
    list.add()就加了四次你最后赋的那个值。而你每次new一个对象又不一样了,这时有四个对象,每个对象都有自己的值。道理就是这么简单!
      

  3.   

    我第一次做毕业设计也是这样。a引用的是同一个对象。而list里面是可以存相同的对象的。如果用其他的结合如vector,可能就会提示一下你,不至于出错。。
      

  4.   


    有点晕。。
    第一次把第一条数据存到实体类。完了放到list里
    第二次吧用新的rs(第二条)数据覆盖这个实体对象的内容,放到list里
    ……
    我的这个理解对吗?
      

  5.   

    说错了,就只有一个实体。java中只要是自己定义的对象都需要new一个的。才能是新的实体。
      

  6.   


    对啊。就是一个实体。
    那我就定义一个a的话第二次set完了放到list里这个过程是怎么个情况。,
    它应该就吧第二条加进去啊。。怎么还把第一条覆盖了