2011-08-17 58 views
0

我有低于这个函数从Oracle数据库拉数据的JavaBean的名称FanBean有困难从Oracle数据库中提取数据,JavaBean和JSP

public java.util.Vector getList() { 

     java.util.Vector myFanList = new java.util.Vector(); 
     StringBuffer sql = new StringBuffer(); 

     DbUtil db = null; 
     ResultSet rset = null; 

      db = new DbUtil(); 

      sql.append(" SELECT id_no, name"); 
       if ((this.getSelectedFanType() != null)&& (this.getSelectedFanType().equals("1"))){ 
        sql.append(" from my_fan "); 
       } 

       if ((this.getSelectedFanType() != null)&& (this.getSelectedFanType().equals("2"))){ 
        sql.append(" from my_fan "); 
        sql.append(" where id_no = '"); 
        sql.append(this.getSearchVar()); 
        sql.append("'"); 
       } 

       if ((this.getSelectedFanType() != null)&& (this.getSelectedFanType().equals("3"))){ 
        sql.append(" from my_fan "); 
        sql.append(" where name = '"); 
        sql.append(this.getSearchVar()); 
        sql.append("'"); 
       } 



      if (this.getSelectedSort() != null) { 
       if(this.getSelectedSort().equals("1")) 
        sql.append(" ORDER BY id_no"); 
       else if(this.getSelectedSort().equals("2")) 
        sql.append(" ORDER BY name"); 
       else 
        sql.append(" ORDER BY id_no"); 
      } else 
       sql.append(" ORDER BY id_no"); 

      rset = db.executeQuery(sql.toString(),true); 

      if (rset != null) { 
       while(rset.next()) { 
        FanBean myFan = new FanBean(); 
        myFan.setIdNo(rset.getString(1).trim()); 
        myFan.setName(rset.getString(2)); 


       myFanList.addElement(myFan); 
       Enumeration e = myFanList.elements(); 
       while (e.hasMoreElements()) { 
       FanBean nextFan = (FanBean) e.nextElement(); 
       this.addDtlItem(nextFan.getIdNo(), nextFan.getName()); 
       } 
       } 
      } 

     } 

    return myFanList; 
    } 

我有这个功能,增加了数据FanItemBean的java bean

public void addDtlItem(String idNo, String name) 
    { 
     FanItemBean detailItem = new FanItemBean(idNo, name); 
     _dtlListArray.add(detailItem); 

    } 

最后在jsp中我拉了数据这样

<% 
    Collection dtlItems = fanBean.getDetailItems(); 
    Iterator it = dtlItems.iterator(); 
    int i = 0; 
    String colorStr = null; 


    while(it.hasNext()){ 
     FanItemBean fanDtlItem = (FanItemBean) it.next(); 

    %> 

     <TR> 
      <TD><%= fanDtlItem.getIdNo()%></TD> 
      <TD><%= fanDtlItem.getName()%></TD> 
     </TR> 
<% 
    i++; 
} %> 

有人能告诉我在这个循环中我做错了什么,我没有在jsp页面中获取任何数据。谢谢

+0

只是检查,但你确定你的JSP的作品?它看起来像在你的JSP脚本中,你正在为while循环缺少一个闭合的“}”(假设你直接从你的JSP中拷贝了这个,我确信这会导致一个问题)。 – brent777

+0

哦对不起,我忘了添加它..我有.. – Jack

+0

你在哪里添加bean到你的请求上下文?你使用servlet吗? – home

回答

0

这段代码似乎有很多错误。

  1. 哪里是_ dltListArray定义和初始化?

  2. 您的while循环rs.next()似乎是不正确的。您将元素添加到列表中,并立即迭代枚举,而不是等待while()循环的其余部分完成。这是正确的代码。

    if (rset != null) { 
         while(rset.next()) { 
          FanBean myFan = new FanBean(); 
          myFan.setIdNo(rset.getString(1).trim()); 
          myFan.setName(rset.getString(2)); 
    
    
          myFanList.addElement(myFan); 
         } // FINISH ADDING ALL RESULTS TO YOUR LIST BEFORE ITERATING OVER THE ENUMERATION 
    
         Enumeration e = myFanList.elements(); 
         while (e.hasMoreElements()) { 
         FanBean nextFan = (FanBean) e.nextElement(); 
         this.addDtlItem(nextFan.getIdNo(), nextFan.getName()); 
         } 
        } 
    
  3. 另外,您的FanBean和FanItemBean看起来完全相同。为什么不直接将它添加到列表中而不是通过中间Vector?

  4. 使用Java 1.5和泛型的任何特定限制?

  5. 另外,在你的jsp中,你调用getList()方法?