[英]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.