【发布时间】:2014-04-04 01:56:37
【问题描述】:
我正在尝试将我的数据库表保存在 Students 类的 ListArray 中。
public List<Students> getData() {
//_Students.clear();
Students tempStudent = new Students();
List<Students> students = new ArrayList<>();
dbConnect();
try {
stmt = c.createStatement();
rs = stmt.executeQuery("SELECT * FROM Students;");
int size = 0;
while (rs.next()) {
tempStudent.studentId = rs.getInt("StudentNo");
tempStudent.studentName = rs.getString("StudentName");
tempStudent.studentAge = rs.getInt("StudentAge");
students.add(tempStudent);
size++;
}
rs.close();
c.commit();
stmt.close();
c.close();
} catch (SQLException e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
return students;
}
当我尝试将数据打印为时在while循环中
System.out.println("Student Id: " + tempStudent.studentId);
它打印得非常好。但是当我尝试将其打印为
for (int i = 0; i < size; i++) {
System.out.println("Student Id: " + student.get(i).studentId);
}
它打印从数据库中读取的最后一条记录。记录数相同。如果数据库表中保存了 4 行,那么显示的记录也将是 4 次。
我使用 LIST 的方式有问题吗? 谢谢!
【问题讨论】:
-
创建
tempStudent的一个新实例,开始你的while。您正在覆盖该值。 -
@Muneeb,别说对不起,这个堆栈溢出了。看我的更新。它将清除您的疑问,如下 A.jsp> conntroller.java > dao.java>dbUtil.java