刚注册的来凑热闹 你的LIST返回的是logger对象的集合 应该没有问题
在JSP页面调用javabean船植的代码帖出来 看看有没错误

解决方案 »

  1.   

    aya327应该不是那的问题LZ用那个是想把SQL语句里面的”+userid写成append(userid)效果一样:)LZ用到了对象存储为什么没用HIBERNATE呢
      

  2.   

    这是jsp的代码,请看
    <table  id="tbl" width="100%" align="center" border="1" cellspacing="0" cellpadding="0">
         <tr bgcolor="#E6EFFF">
        <td height="25"><div align="center"><strong><span class="STYLE4">日志</span></strong></td>
            <td height="25"><div align="center"><strong><span class="STYLE4">项目</span></strong></div></td>
    <td height="25"><div align="center"><strong><span class="STYLE4"> 任务描述</span></strong></div></td>
        <td height="25"><div align="center"><strong><span class="STYLE4">开始时间</span></strong></div></td>
        <td height="25"><div align="center"><strong><span class="STYLE4">结束时间</span></strong></div></td>
    <td height="25"><div align="center"><strong><span class="STYLE4">间隔时间</span></strong></div></td>
    <td height="25"><div align="center"><strong><span class="STYLE4">任务完成比例</span></strong></div></td>
     </tr>
    <%
     List loglist1=(ArrayList)request.getAttribute("loglist1");
      
      if(loglist1!=null&& loglist1.size()>0){
      System.out.println("size="+loglist1.toString());
      for(int i=0;i<loglist1.size();i++){
      Logger  logger         = (Logger) loglist1.get(i);
      int    logId           = logger.getLogid();
      int    proId           = logger.getProid();
      int    taskName        = logger.getTaskName();
      String  startTime      = logger.getStartTime();
      String  endTime        = logger.getEndTime();
      int    interruptTime   = logger.getInterruptTime();
      float  rate           =  logger.getRate();
      System.out.println("logger="+logger.getLogid());
     %>
      
     <tr>
          <td height="23" class="STYLE4"><div align="center">&nbsp;<%=logId %></div></td>
          <td height="23" class="STYLE4"><div align="center">&nbsp;<%=proId %></div></td>
          <td height="23" class="STYLE4"><div align="center">&nbsp;<%=taskName %></div></td>
          <td height="23" class="STYLE4"><div align="center">&nbsp;<%=startTime %></div></td>
          <td height="23" class="STYLE4"><div align="center">&nbsp;<%=endTime %></div></td>
          <td height="23" class="STYLE4"><div align="center">&nbsp;<%=interruptTime %></div></td>
          <td height="23" class="STYLE4"><div align="center">&nbsp;<%=rate %></div></td>
        </tr>
     <%   
       }
      }
      %>
      

  3.   

    public List queryLog(String userid){
    List loglist=null;
    Logger logger=new Logger();
    ResultSet rs=null;
    DBManager dbm=new DBManager();
    String sql2="select A.LOGID,B.PROID,A.TASKNAME,A.STARTTIME,A.ENDTIME,A.INTERRUPTTIME,A.RATE FROM TASKLOG A,WORKLOG B WHERE A.LOGID=B.LOGID AND B.USERID='"+userid + "'";
    System.out.println("userid="+userid);
    try{
    rs=dbm.executeQuery(sql2)
    while(rs.next()){
    loglist = new ArrayList();
    logger.setLogid(rs.getInt("LOGID"));
    logger.setProid(rs.getInt("PROID"));
    logger.setTaskName(rs.getInt("TASKNAME"));
    logger.setStartTime(rs.getString("STARTTIME"));
    logger.setEndTime(rs.getString("ENDTIME"));
    logger.setInterruptTime(rs.getInt("INTERRUPTTIME"));
    logger.setRate(rs.getFloat("RATE"));
    loglist.add(logger);
    }
    }catch (SQLException ex)
    {
    ex.printStackTrace();
    }finally{
    try{
    if(rs!=null)
        rs.close();
        if(dbm!=null)
    dbm.close();
    }catch(SQLException e){
    e.printStackTrace();
    }
    }
    return loglist;
    }}
      

  4.   

    LZ不是说每次记录都会递增
    其他的地方我实在看不出有什么问题..
    建议LZ把SQL语句打出来看一下...
    楼上正解..用hibernate就好了
      

  5.   

    我把SQL打出来看过
    没有问题的
    我也不知道是哪的问题
      

  6.   

    while(rs.next()){
    loglist = new ArrayList();}
    每取一条记录都new 一次?
      

  7.   

    ....你这个地方循环把对象放到list里面
    new 一次不就行了
    虽然我不知道是不是这个问题
      

  8.   

    绝对不可以重新初始化链表。我看了半天晕了 没有看出什么错误 要是loglist是在之前
    request.setAttribute("loglist1",queryLog(String userid));应该在request范围内取得的都是一个值可为什么会错呢。
      

  9.   

    恩,livan1038正解。
    LZ所写的程序,list里放的全是同一个对象!
      

  10.   

    我加了loglist = new ArrayList();这回只显示一条记录了
    我晕了
      

  11.   

    你是按照livan1038的方法做的吗?我测试过没问题啊,得到不同的对象。
    之前你得到的都是同一个对象是因为list集合里放的对象的内存地址都是同一个,即同一个对象!
      

  12.   

    改SQL语句和new list 有什么用 Lz就是想把几个结果结放在LIST中 代码都末尾问题 loglist = new ArrayList();是不可以加的 这样只能返回符合语句的最后一条语句 也是是Lz问的啊:)
      

  13.   

    才我看错代码了..汗了 那个不是LZ写的
    循环里面 应该先Logger logger=new Logger();
    然后设置属性
      

  14.   

    一开始都是好的
    userid=22
    rs=org.apache.commons.dbcp.DelegatingResultSet@10a0d51
    rs.getInt(1)=31
    rs.getInt(2)=0
    rs.getInt(3)=1
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=1
    rs.getFloat(7)=1.0
    rs.getInt(1)=32
    rs.getInt(2)=0
    rs.getInt(3)=2
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=2
    rs.getFloat(7)=2.0
    rs.getInt(1)=34
    rs.getInt(2)=0
    rs.getInt(3)=2
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=2
    rs.getFloat(7)=2.0
    rs.getInt(1)=35
    rs.getInt(2)=0
    rs.getInt(3)=1
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=1
    rs.getFloat(7)=1.0
    rs.getInt(1)=36
    rs.getInt(2)=0
    rs.getInt(3)=7
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=7
    rs.getFloat(7)=7.0
    rs.getInt(1)=37
    rs.getInt(2)=0
    rs.getInt(3)=1
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=1
    rs.getFloat(7)=1.0
    rs.getInt(1)=38
    rs.getInt(2)=0
    rs.getInt(3)=2
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=2
    rs.getFloat(7)=2.0
    rs.getInt(1)=40
    rs.getInt(2)=0
    rs.getInt(3)=666
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=666
    rs.getFloat(7)=666.0
    rs.getInt(1)=41
    rs.getInt(2)=0
    rs.getInt(3)=1
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=1
    rs.getFloat(7)=1.0
    rs.getInt(1)=42
    rs.getInt(2)=0
    rs.getInt(3)=1
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=1
    rs.getFloat(7)=1.0
    rs.getInt(1)=43
    rs.getInt(2)=0
    rs.getInt(3)=3333333
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=3
    rs.getFloat(7)=3.0
    rs.getInt(1)=45
    rs.getInt(2)=0
    rs.getInt(3)=11
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=11
    rs.getFloat(7)=1.0
    rs.getInt(1)=51
    rs.getInt(2)=0
    rs.getInt(3)=32
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=32
    rs.getFloat(7)=32.0
    rs.getInt(1)=53
    rs.getInt(2)=0
    rs.getInt(3)=343
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=343
    rs.getFloat(7)=343.0
    rs.getInt(1)=54
    rs.getInt(2)=0
    rs.getInt(3)=34
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=3
    rs.getFloat(7)=4.0
    rs.getInt(1)=55
    rs.getInt(2)=0
    rs.getInt(3)=23
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=23
    rs.getFloat(7)=23.0
    rs.getInt(1)=57
    rs.getInt(2)=0
    rs.getInt(3)=4
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=4
    rs.getFloat(7)=4.0
    rs.getInt(1)=58
    rs.getInt(2)=0
    rs.getInt(3)=23
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=23
    rs.getFloat(7)=23.0
    rs.getInt(1)=33
    rs.getInt(2)=0
    rs.getInt(3)=3
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=3
    rs.getFloat(7)=3.0
    rs.getInt(1)=39
    rs.getInt(2)=0
    rs.getInt(3)=666
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=666
    rs.getFloat(7)=666.0
    rs.getInt(1)=44
    rs.getInt(2)=0
    rs.getInt(3)=21
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=21
    rs.getFloat(7)=21.0
    rs.getInt(1)=46
    rs.getInt(2)=0
    rs.getInt(3)=11
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=11
    rs.getFloat(7)=11.0
    rs.getInt(1)=47
    rs.getInt(2)=0
    rs.getInt(3)=3333
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=3
    rs.getFloat(7)=3.0
    rs.getInt(1)=48
    rs.getInt(2)=0
    rs.getInt(3)=5
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=5
    rs.getFloat(7)=5.0
    rs.getInt(1)=49
    rs.getInt(2)=0
    rs.getInt(3)=2323
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=23
    rs.getFloat(7)=23.0
    rs.getInt(1)=50
    rs.getInt(2)=0
    rs.getInt(3)=34
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=34
    rs.getFloat(7)=34.0
    rs.getInt(1)=52
    rs.getInt(2)=0
    rs.getInt(3)=66
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=66
    rs.getFloat(7)=66.0
    rs.getInt(1)=56
    rs.getInt(2)=0
    rs.getInt(3)=23
    rs.getString(4)=9:00
    rs.getString(5)=17:30
    rs.getInt(6)=23
    rs.getFloat(7)=23.0
      

  15.   

    可是从这开始都是同一个地址,为什么
    List loglist1=(ArrayList)request.getAttribut("loglist1");
    loglist1.toString()=[com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4, com.hiaward.prms.entity.Logger@4a2dd4]
      

  16.   

    是不是setattribute的问题呢
    我觉得不是
    应该是rs.next的问题
      

  17.   

    应该先Logger logger=new Logger();
    然后设置属性
    3270说的对 要在链表中加入一条记录要先实力化一个对象刚没看到 改了试试看
      

  18.   

    楼上的高手你是说我应该在rs.next的循环里假一个Logger logger=new Logger();是这个意思吗
      

  19.   

    谢谢你a276202460() 还有3270
    确实是没有加Logger logger=new Logger();的原因
      

  20.   

    这么多人都解决不了这一样一个问题?????public List queryLog(String userid){
    List loglist=new ArrayList();ResultSet rs=null;
    DBManager dbm=new DBManager();
    StringBuffer sql2=new StringBuffer("select A.LOGID,B.PROID,A.TASKNAME,A.STARTTIME,A.ENDTIME,A.INTERRUPTTIME,A.RATE FROM TASKLOG A,WORKLOG B WHERE A.LOGID=B.LOGID AND B.USERID=").append(userid);//换成下面的StringBuffer sql2=new StringBuffer("select A.LOGID,B.PROID,A.TASKNAME,A.STARTTIME,A.ENDTIME,A.INTERRUPTTIME,A.RATE FROM TASKLOG A,WORKLOG B WHERE A.LOGID=B.LOGID AND B.USERID='").append(userid).append("'");System.out.println("userid="+userid);
    try{
    rs=dbm.executeQuery(sql2.toString());
    System.out.println("rs="+rs);
    while(rs.next()){
    Logger logger=new Logger();//放到这里来logger.setLogid(rs.getInt(1));System.out.println("rs.getInt(1)="+rs.getInt(1));
    logger.setProid(rs.getInt(2));System.out.println("rs.getInt(2)="+rs.getInt(2));
    logger.setTaskName(rs.getInt(3));System.out.println("rs.getInt(3)="+rs.getInt(3));
    logger.setStartTime(rs.getString(4));System.out.println("rs.getString(4)="+rs.getString(4));
    logger.setEndTime(rs.getString(5));System.out.println("rs.getString(5)="+rs.getString(5));
    logger.setInterruptTime(rs.getInt(6));System.out.println("rs.getInt(6)="+rs.getInt(6));
    logger.setRate(rs.getFloat(7));System.out.println("rs.getFloat(7)="+rs.getFloat(7));
    loglist.add(logger);
    }
    }catch (SQLException ex)
    {
    ex.printStackTrace();
    }finally{
    try{
    if(rs!=null)
        rs.close();
        if(dbm!=null)
    dbm.close();
    }catch(SQLException e){
    e.printStackTrace();
    }
    }
    return loglist;
    }}
    不要用stringbuffer,特别是的userid
      

  21.   

    B.USERID是varcahr的话就要换,如果int类型的话就不换
      

  22.   

    问题1:每次都是相同数据
    Logger logger=new Logger();
    放到 while 循环里
    while(rs.next()){
    Logger logger=new Logger();
    logger.setLogid(rs.getInt(1));System.out.println("rs.getInt(1)="+rs.getInt(1));
    ……
    ……
    loglist.add(logger);
    }
    意思是 如果 rs.next() 还有值 那么在创建一个对象 设置 放入集合里
    在外面 new 那每次装的对象是相同的 因为你只创建了一个对象 while 循环里只是对他覆盖问题2: 每次追加
     每次追加 可能是 你向session 里方 list 集合时 这个集合没有清空 楼主检查一下向session设置那快(因为没有发现 向session 赋值的代码所以 我不能确定 只是 平经验推断)