重复记录两次
Repeating a record twice
我正在使用 JDBC 中的以下函数从数据库中获取行。我在数据库中有两条记录,但它只打印一条记录两次。那就是最后的记录。为什么会这样?
public List<Student> getRows() throws SQLException {
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/something", "root", "root");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM student");
Student tmp = new Student();
while (rs.next()) {
tmp.setId(rs.getInt("id"));
tmp.setName(rs.getString("name"));
list.add(tmp);
}
return list;
}
当您将 student
添加到 list
时,您是通过引用而不是值传递学生,因为这就是 java 的工作方式。因此,当您在第二次循环运行时再次更改它时,它会更改列表中的第一个条目,因为它仍然指向学生。你需要做类似 list.add(new Student(student.getID(), student.getName()) 的事情,或者每次循环运行时你都可以 new student (我认为这是更好的做法) .
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
list.add(student);
}
我正在使用 JDBC 中的以下函数从数据库中获取行。我在数据库中有两条记录,但它只打印一条记录两次。那就是最后的记录。为什么会这样?
public List<Student> getRows() throws SQLException {
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/something", "root", "root");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM student");
Student tmp = new Student();
while (rs.next()) {
tmp.setId(rs.getInt("id"));
tmp.setName(rs.getString("name"));
list.add(tmp);
}
return list;
}
当您将 student
添加到 list
时,您是通过引用而不是值传递学生,因为这就是 java 的工作方式。因此,当您在第二次循环运行时再次更改它时,它会更改列表中的第一个条目,因为它仍然指向学生。你需要做类似 list.add(new Student(student.getID(), student.getName()) 的事情,或者每次循环运行时你都可以 new student (我认为这是更好的做法) .
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
list.add(student);
}