簡體   English   中英

ArrayList僅獲得一行,並且ResultSet讀取多個

[英]ArrayList gets only one row and the ResultSet reads more than one

我正在嘗試為台式機編寫Java n層應用程序,我需要填充JComboBox。 DAO中的ResultSet讀取15行,但是當我將ArrayList發送到JComboBox時,它僅顯示最后一項。 怎么了?

這是DAO:

public static ArrayList<AbastosOpLog> LisAbasDisp(){
      ArrayList <AbastosOpLog> abastosop = new ArrayList<>();
      Conexion conex = new Conexion();
      AbastosOpLog abasop = new AbastosOpLog(); 
      String consulta = "select abop001.abascod, abop001.abasdesc from abop001";

      try{
         Statement st = null;
         ResultSet rs = null;
         st = conex.getConnection().createStatement();
         rs = st.executeQuery(consulta);
         if(conex != null){


            while (rs.next())
               {
                  abasop.setAbas_cod(rs.getString("abascod"));
                  abasop.setAbas_desc(rs.getString("abasdesc"));
                  abastosop.add(abasop);


               }
         }
         rs.close();
         st.close();
         conex.desconectar();
      }catch (SQLException e) {
         System.out.println("Error."+e.getMessage());
      }

邏輯類:

public class AbastosOpLog {
   private String abas_cod;
   private String abas_desc;
   //
   public String getAbas_cod() {
      return abas_cod;
   }
   public void setAbas_cod(String abas_cod) {
      this.abas_cod = abas_cod;
   }
   public String getAbas_desc() {
      return abas_desc;
   }
   public void setAbas_desc(String abas_desc) {
      this.abas_desc = abas_desc;
   }
}

和視圖:

private void LlenarOpAbastos() {
   cblisopt.removeAllItems();
   ArrayList <AbastosOpLog> abastoop = AbastosOpDao.LisAbasDisp();

      for (int i = 0; i < abastoop.size(); i++) {
          cblisopt.addItem(abastoop.get(i).getAbas_cod()); // + " - " + abastoop.get(i).getAbas_desc());

      }
}

結果如下:

在此處輸入圖片說明

謝謝

           while (rs.next())
           {
              abasop.setAbas_cod(rs.getString("abascod"));
              abasop.setAbas_desc(rs.getString("abasdesc"));
              abastosop.add(abasop);
           } 

您要一遍又一遍地添加相同的實例。 在每次迭代中創建一個新實例(也刪除先前的聲明):

           while (rs.next())
           {
              AbastosOpLog abasop = new AbastosOpLog(); 
              abasop.setAbas_cod(rs.getString("abascod"));
              abasop.setAbas_desc(rs.getString("abasdesc"));
              abastosop.add(abasop);
           } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM