我想做什么:
问题:
我的逻辑是我运行循环while(rs.next())
,我将进行第一轮检查,检查时间,之后检查通过它进入另一个{{1当它通过检查时,它将从该行获取该数据并将其添加到arraylist中。但是,当我运行代码时,我相信检查工作正常但是它将相同的数据一遍又一遍地存储到arraylist中。特别是它存储了最后一行的数据,例如,当id 1,2,3,4,5,6通过验证时,它将一遍又一遍地存储id6。
if
答案 0 :(得分:1)
您正在使用data
的单个实例,只需在ResultSet
的每次迭代中更新...
while(rs.next()){
if(dosageTime.equalsIgnoreCase("morning")){
if(rs.getInt("morningtaken")==0){
//...
// You never create a new "data" object...
// setting the information
data.setElderBed(rs.getInt("bed"));
data.setElderName(rs.getString("name"));
data.setElderAge(ElderData.getAge(year,month,day));
data.setElderGender(rs.getString("gender"));
DosageList.add(data);
numofElder++;
}
}
所以,基本上,你只会得到一个List
个对象,这些对象都是同一个对象。您可以使用某种类型的Set
进行测试,但最终只会在Set
中使用一个项目。
相反,您可能需要考虑使用Factory或Builder模式来确保在ResultSet
的每次迭代中,您正在创建data
的新实例填充了数据库中的属性