重复两次记录

时间:2015-05-28 03:21:26

标签: java jdbc

我使用JDBC中的以下函数从DB中获取行。我在DB中有两条记录但它只打印两条记录。这就是最后的记录。为什么会这样?

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;

    }

1 个答案:

答案 0 :(得分:3)

当您将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);
    }