检索数据重复错误

时间:2016-01-17 12:40:58

标签: java mysql database swing arraylist

我想做什么:

  1. 进行2轮验证以从MySQL检索数据,首先是检查当天的时间,第二是检查是否采用了时间,如果没有采取时间,我从该行获取数据并添加它成为一个arraylist。
  2. 问题:

    1. 我的逻辑是我运行循环while(rs.next()),我将进行第一轮检查,检查时间,之后检查通过它进入另一个{{1当它通过检查时,它将从该行获取该数据并将其添加到arraylist中。但是,当我运行代码时,我相信检查工作正常但是它将相同的数据一遍又一遍地存储到arraylist中。特别是它存储了最后一行的数据,例如,当id 1,2,3,4,5,6通过验证时,它将一遍又一遍地存储id6。

      if

1 个答案:

答案 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中使用一个项目。

相反,您可能需要考虑使用FactoryBuilder模式来确保在ResultSet的每次迭代中,您正在创建data的新实例填充了数据库中的属性