2016-02-15 3 views
0

Я пытаюсь распечатать содержимое списка, но я получаю неправильные значения.Looping through List Java

([email protected]) вместо результата запроса

Ниже боба

public class StudentModel { 
    int studentId; 
    String studentName; 

    public int getStudentId() { 
     return studentId; 
    } 

    public void setStudentId(int restaurantId) { 
     this.studentId = resturantId; 
    } 

    public String getStudentName() { 
     return studentName; 
    } 

    public void setStudentName(String studentName) { 
     this.studentName = studentName; 
    } 
} 

Метод запроса:

public static List<StudentModel> StudentDetails() { 
    Connection conn = connection.dbConnection(); 
    List<StudentModel> students = new ArrayList<StudentModel>(); 

    try { 

     String checkCst = "select * from student"; 

     PreparedStatement stmt = conn.prepareStatement(checkCst); 

     ResultSet rCST = stmt.executeQuery(); 

     while (rCST.next()) { 
      StudentModel rM = new StudentModel(); 
      rM.setStudentId(rCST.getInt(1)); 
      rM.setStudentName(rCST.getString(2)); 
      students.add(rM); 
     } 

    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

    return students; 
} 

Это, как я пытался вызвать метод:

StudentModel rM = new StudentModel(); 
List<StudentModel> student = ListStudentDetails.StudentDetails(); 

for (int i = 0; i < student.size(); i++) { 
    System.out.println(" " + student.get(i)); 
    System.out.println(" " + student.get(i)); 
} 

Запрос работает нормально, поэтому я предполагаю, что проблема возникает в цикле for, когда я вызываю метод StudentDetails.

спасибо.

+2

'» ... но я я получаю неправильные значения »- пожалуйста, уточните. Какие значения вы видите и какие значения вы ожидаете? –

+1

Вы не переопределяете 'toString' в классе' StudentModel'. –

+0

Вы дважды печатаете один и тот же объект –

ответ

1

В вашем случае if есть проблема, это должно быть некоторое время.

   while (rCST.next()) { 
        StudentModel rM = new StudentModel(); 
        rM.setStudentId(rCST.getInt(1)); 
        rM.setStudentName(rCST.getString(2)); 
        students.add(rM); 
       } 

И вы можете попробовать вместо печати эталонного значения объекта, имя студента, например

System.out.println(" " + student.get(i).getStudentName()); 

или вы можете

public class StudentModel { 

    int studentId; 
    String studentName; 

    public int getStudentId() { 
     return studentId; 
    } 

    public void setStudentId(int restaurantId) { 
     this.studentId = resturantId; 
    } 

    public String getStudentName() { 
     return studentName; 
    } 

    public void setStudentName(String studentName) { 
     this.studentName = studentName; 
    } 

    @Override 
    public String toString(){ 
     return this.studentName; 
    } 

} 
+0

я должен изменить его в то время, и я все еще получаю результат, как \t Этот вопрос уже есть ответ здесь: Как напечатать мой объект Java, не получая «SomeType @ 2f92e0f4»? 4 ответа Я пытаюсь распечатать содержимое списка, но я получаю неправильные значения. ([email protected]) вместо результата запроса – mike

+0

@mike, при приеме вам следует перебирать список следующим образом: 'for (StudentModel myStudent: student) {System.out.println (myStudent.getStudentId()); System.out.println (myStudent.getStudentName();} '. – aribeiro