【发布时间】:2016-01-17 12:40:57
【问题描述】:
我想做什么:
- 进行 2 轮验证以从 MySQL 中检索数据,首先是检查一天中的时间,其次检查是否采用了该时间,如果没有采用该时间,我从该行获取数据并添加它进入一个数组列表。
问题:
-
我的逻辑是我运行循环
while(rs.next()),我将进行第一轮检查,即检查时间,然后当检查通过时,它进入另一个if,当通过时检查它将从该行获取该数据并将其添加到arraylist。但是,当我运行代码时,我相信检查正在工作,但它会一遍又一遍地将相同的数据存储到 arraylist 中。特别是它存储最后一行的数据,例如 id 1,2,3,4,5,6 通过验证它只会一遍又一遍地存储 id6。try { PreparedStatement stmt = so.getPreparedStatementWithKey("SELECT * FROM et_elderly WHERE room = ?"); stmt.setString(1, roomNum); stmt.executeQuery(); rs = stmt.getResultSet(); while(rs.next()){ if(dosageTime.equalsIgnoreCase("morning")){ if(rs.getInt("morningtaken")==0){ // calculate the age java.sql.Date reportDate=rs.getDate("dob"); DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); String text = df.format(reportDate); String year=text.substring(0, 4); String month=text.substring(5,7); String day=text.substring(8,10); // 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++; } } else if (dosageTime.equalsIgnoreCase("afternoon")){ if(rs.getInt("afternoontaken")==0){ // calculate the age java.sql.Date reportDate=rs.getDate("dob"); DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); String text = df.format(reportDate); String year=text.substring(0, 4); String month=text.substring(5,7); String day=text.substring(8,10); // 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++; } } else if (dosageTime.equalsIgnoreCase("noon")){ if(rs.getInt("noontaken")==0){ // calculate the age java.sql.Date reportDate=rs.getDate("dob"); DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); String text = df.format(reportDate); String year=text.substring(0, 4); String month=text.substring(5,7); String day=text.substring(8,10); // 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++; } } } } catch (SQLException e1) { e1.printStackTrace(); }
【问题讨论】:
-
您是否每次都创建一个“新”对象?
-
不应该:stmt.setString(1, roomNum);实际上是:stmt.setInt(1, roomNum);当然,除非房间确实是一个字符串。
标签: java mysql database swing arraylist