gpt4 book ai didi

java - 重复记录两次

转载 作者:行者123 更新时间:2023-11-29 05:05:34 24 4
gpt4 key购买 nike

我正在使用 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()) 这样的事情,或者你可以在每次循环运行时新学生(我认为这是更好的做法)。

    while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
list.add(student);
}

关于java - 重复记录两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com