1 回答
TA贡献1876条经验 获得超7个赞
我不确定你在哪里声明了提取方法中的人。
但是在方法中本地声明一个应该可以解决手指交叉的问题。
所以我认为发生的事情是你宣布了一个全球性的人。你正在设置字段。所以有一个 person 对象,你只是在改变它的细节。当您将其添加到 arraylist 时,您将添加对同一个人的引用。所以最后你添加了 3 个对同一个 person 对象的引用。该 person 对象已将其字段设置为 db 中的最后一个条目。我希望这是有道理的。
我得出这个结论的原因是当你打印这个人时,我让你在 rs.next 循环中做的 println 打印相同的引用。进行下面的更改后,您将看到引用发生了变化。因为您每次都创建一个新人并返回该新人对象,然后将对该对象的引用添加到数组列表中。
private Person extractUserFromResultSet(ResultSet rs) throws SQLException {
// add this line below
Person person = new Person();
person.setId(rs.getInt("ID"));
person.setFName(rs.getString("FName"));
person.setLName(rs.getString("LName"));
person.setDOB(rs.getString("DOB"));
person.setDepartment(rs.getString("Department"));
person.setLocation(rs.getString("Location"));
person.setCellNr(rs.getString("Cellnr"));
person.setUsername(rs.getString("Username"));
person.setPassword(rs.getString("Password"));
return person;
}
添加回答
举报