我正在编写代码以实现库存模型。作为其中的一部分,我必须从数据库中获取Item并设置Item的属性,然后将该Item对象添加到列表中,从而在列表上执行一些功能。数据库中有三个表,每个表包含3行。但是问题在于,只有最后一张表中的最后一行被插入了九次。请帮助我找到代码中的问题所在。readAllItemsFromDb方法具有上述任务,并返回Item对象的列表。Item类包含ID,描述,重量,价格,制造日期,useBeforeMonths及其设置和获取方法等字段。
我的方法代码如下-
public List<Item> readAllItemsFromDb() {
// TODO Auto-generated method stub
List<Item> list=new ArrayList<Item>();
Item item=new Item();
Milk milk=new Milk();
Cheese cheese=new Cheese();
Wheat wheat=new Wheat();
String cheese_type=new String();
String milk_type=new String();
String wheat_type=new String();
String ingred_cheese=new String();
String cheese_query="select id,description,weight,price,mfg_date,UseBeforeInMonths from cheese_tbl;";
String milk_query="select id,description,weight,price,mfg_date,UseBeforeInMonths from milk_tbl;";
String wheat_query="select id,description,weight,price,mfg_date,UseBeforeInMonths from wheat_tbl;";
try {
con=dcm.getConnection();//Theres' no problem with Connection
st=con.createStatement();
rs=st.executeQuery(cheese_query);
while(rs.next()){
item.setId(rs.getInt(1));
item.setDescription(rs.getString(2));
item.setWeight(rs.getFloat(3));
item.setPrice(rs.getFloat(4));
item.setManufacturingDate(rs.getDate(5));
item.setUseBeforeMonths(rs.getInt(6));
list.add(item);
}
rs=st.executeQuery(milk_query);
while(rs.next()){
item.setId(rs.getInt(1));
item.setDescription(rs.getString(2));
item.setWeight(rs.getFloat(3));
item.setPrice(rs.getFloat(4));
item.setManufacturingDate(rs.getDate(5));
item.setUseBeforeMonths(rs.getInt(6));
list.add(item);
}
rs=st.executeQuery(wheat_query);
while(rs.next()){
item.setId(rs.getInt(1));
item.setDescription(rs.getString(2));
item.setWeight(rs.getFloat(3));
item.setPrice(rs.getFloat(4));
item.setManufacturingDate(rs.getDate(5));
item.setUseBeforeMonths(rs.getInt(6));
list.add(item);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
您必须在while循环的每次迭代开始时创建一个新的Item对象。
while(rs.next()){
item = new Item();
item.setId(rs.getInt(1));
item.setDescription(rs.getString(2));
item.setWeight(rs.getFloat(3));
item.setPrice(rs.getFloat(4));
item.setManufacturingDate(rs.getDate(5));
item.setUseBeforeMonths(rs.getInt(6));
list.add(item);
}
rs=st.executeQuery(milk_query);
while(rs.next()){
item = new Item();
item.setId(rs.getInt(1));
item.setDescription(rs.getString(2));
item.setWeight(rs.getFloat(3));
item.setPrice(rs.getFloat(4));
item.setManufacturingDate(rs.getDate(5));
item.setUseBeforeMonths(rs.getInt(6));
list.add(item);
}
rs=st.executeQuery(wheat_query);
while(rs.next()){
item = new Item();
item.setId(rs.getInt(1));
item.setDescription(rs.getString(2));
item.setWeight(rs.getFloat(3));
item.setPrice(rs.getFloat(4));
item.setManufacturingDate(rs.getDate(5));
item.setUseBeforeMonths(rs.getInt(6));
list.add(item);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句