2017-05-26 6 views
-4

Wie kann eine SQL-Abfrage Daten aus mehreren Tabellen zurückgeben? für ex. meine sql-Abfrage soll alle Schüler in bestimmten Klassenzimmer auflisten, aber stattdessen zeigt es nur 1 Schüler. Kann dies durch Systemausgabe erfolgen?Wie kann eine SQL-Abfrage Daten aus mehreren Tabellen zurückgeben?

if (forms.Validation.textNotEmpty(tfId)) { 
    try { 
     ResultSet rs = hogDB.getData("select * from student where sleepRoom = ("+tId.getText()+");"); 

     if (rs.next()) { 
      tfStudentId1.setText(rs.getString("student_id")); 
      tfForNamne1.setText(rs.getString("fornamne")); 
      tfAfterNamne1.setText(rs.getString("AfterNamn")); 
      tfSleep1.setText(rs.getString("sleepRoom")); 

     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Ich rate Codierung mit englischen Variablennamen, Spaltennamen usw. Insbesondere, wenn Sie vorhaben, Fragen in internationalen Foren zu stellen. Wir brauchen mehr Informationen. Was ist das Datenmodell und die Population? Was hast du selbst versucht? –

+0

Haben Sie mehrere Textfelder, um mehrere Ergebnisse anzuzeigen? Ändern Sie es auch von 'if (rs.next()) {' in 'while (rs.next()) {' –

+0

Um Felder aus einer anderen Tabelle anzugeben, geben Sie dem Tabellennamen ein Präfix, z. 'SELECT elevhem.ELEVHEM_ID ...'. –

Antwort

0

Um herauszufinden, ob Sie wirklich nur einen oder mehrere Schüler abrufen, hier ein Vorschlag für einen Testcode.

 try { 
      ResultSet rs = hogDB.getData("select * from student where sleepRoom = (" 
              + tId.getText() + ");"); 

      int count = 0; 
      while (rs.next()) { 
       System.out.format("%-10s%-20s%-20s%-8s%n", 
         rs.getString("student_id"), rs.getString("fornamne"), 
         rs.getString("AfterNamn"), rs.getString("sleepRoom")); 
       count++; 
      } 
      System.out.println("" + count + " students retrieved"); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 

Ein anderes mögliches Problem, ist tId.getText() eine Nummer? Wenn dies nicht der Fall ist, sollten Sie es wahrscheinlich in Anführungszeichen setzen. In jedem Fall ist die empfohlene Methode, einen Wert an die Datenbank zu übergeben, über einen ? Platzhalter und einen Aufruf an die vorbereitete Anweisung.

Verwandte Themen