DepartmentVO depvo = new DepartmentVO();
放入while(rs.next())
循环里

解决方案 »

  1.   

    正如楼上所言,因为一直到rs.next()完了都是对一个DepartmentVO放数据,所以arraylist只能加到最后一次的值,如果放在循环里面,每次都会生成新的DepartmentVO对象来存放数据。
      

  2.   

    ArrayList al = new ArrayList();
    ResultSet rs = null;
    PreparedStatement pstmt = null;
    String sSql = "select * from Department";
    try
    {
    pstmt = conn.prepareStatement(sSql);
    rs = pstmt.executeQuery(); while(rs.next())
    {
    DepartmentVO depvo = new DepartmentVO();//放到这里就能满足你的要求了
    depvo.setDepartmentID(rs.getString("DepartmentID"));
    depvo.setDepartmentName(rs.getString("DepartmentName"));
    al.add(depvo);
    }
    return al;
    }
    catch(Exception ex)
    {
    this.error("Query department error,pleasse check!");
    throw ex;
    }
    finally
    {
    releaseResult(rs);
    releaseStatement(pstmt);
    }
    }
      

  3.   

    这么解释,al.add(depvo)加的是内存里的地址。虽然你add了那么多条记录,但是你所有记录都是用同一个内存地址里的值。而最后跳出循环的值是最后一个记录的值,所以所有的值都是最后一条记录。:)
      

  4.   

    非常同意 cyicecream的一句话:al.add(depvo)加的是内存里的地址。虽然你add了那么多条记录,但是你所有记录都是用同一个内存地址里的值