这里很简单,我已连接到sqldb和我的数据库 我正在从表中检索行。
对于每一行,我希望将数据保存到ArrayList
。每一行都是
ArrayList
中的项目。
这是我到目前为止所做的。
List<DVDProperty> DVDList = new ArrayList<DVDProperty>();
DVDProperty context = new DVDProperty();
while (res.next()) {
int i = res.getInt("idnew_table");
String s = res.getString("dvdName");
context.setDVDId(i);
context.setDVDName(s);
DVDList.add(context);
}
DVDPropery
是一个set属性,我使用表行值设置属性。
我有2行,包含以下数据
1疤脸 2头像
每次我在循环中运行ArrayList
覆盖
1疤脸
2个阿凡达两次
我希望每次都向我的ArrayList
添加一个新行
并且它不会覆盖
答案 0 :(得分:12)
在循环中实例化DVDProperty
。目前,您正在重用相同的实例,从而覆盖其属性:
while (res.next()) {
DVDProperty context = new DVDProperty();
...
}
答案 1 :(得分:6)
您必须为每条记录创建DVDProperty类型的新对象。此时,您在每次迭代中更改相同的对象(上下文)。尝试:
List<DVDProperty> DVDList = new ArrayList<DVDProperty>();
while (res.next()) {
int i = res.getInt("idnew_table");
String s = res.getString("dvdName");
DVDProperty context = new DVDProperty();
context.setDVDId(i);
context.setDVDName(s);
DVDList.add(context);
}
答案 2 :(得分:0)
Please create new instance of the DVDProperty object in loop everytime it runs the loop.
Please refer to code snippet below.
Code
List<DVDProperty> DVDList = new ArrayList<DVDProperty>();
DVDProperty context = null;
while (res.next()) {
int i = res.getInt("idnew_table");
String s = res.getString("dvdName");
context = new DVDProperty();
context.setDVDId(i);
context.setDVDName(s);
DVDList.add(context);
}