Возникли проблемы с переносом данных из базы данных Oracle в javabean и jsp. - PullRequest
0 голосов
/ 17 августа 2011

У меня есть javabean-имя FanBean, ниже которого есть эта функция, которая извлекает данные из базы данных oracle

 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;
    }

У меня есть эта функция, которая добавляет данные в java-компонент FanItemBean

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.Спасибо

1 Ответ

0 голосов
/ 17 августа 2011

Кажется, с этим кодом много чего не так.

  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 кажутся идентичными. Почему бы просто не добавить его непосредственно в свой список вместо того, чтобы проходить через промежуточный Вектор?

  4. Есть ли какие-то конкретные ограничения на использование Java 1.5 и обобщений?

  5. Кроме того, где в вашем jsp вы вызываете метод getList()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...