Я пытаюсь сохранить таблицу базы данных в ListArray класса Студенты.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;
}
В то время как цикл, когда я пытаюсь напечатать данные в виде
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 раза.
Есть ли что-то не так с тем, как я использую СПИСОК? Спасибо!
Создать новый экземпляр 'tempStudent' в начало вашего времени. Вы переписываете значение. – hofmeister
@Muneeb, не извините, этот стек над потоком. Посмотрите мое обновление. он очистит ваше сомнение, следуя A.jsp> conntroller.java> dao.java> dbUtil.java – jmail