2016-10-12 7 views
0

In meinem Code, während (rs.next()) nur die letzten Zeilendaten zurückgibt. Ich habe auch versucht, if (rs.next()), aber es wird mir nur die Daten der ersten Zeile geben.Warum während (rs.next()) nur die letzten Zeilendaten zurückgibt?

Bitte helfen Sie mir, dies zu lösen.

ResultSet rs=stmt.executeQuery(); 
{ while(rs.next()) 
    { System.out.println(rs.getInt(1)+" "+rs.getInt(8)); 

     l.setText(rs.getInt(2)+" "+rs.getString(3)); 
     jb[0].setText(rs.getString(4)); 
     jb[1].setText(rs.getString(5)); 
     jb[2].setText(rs.getString(6)); 
     jb[3].setText(rs.getString(7)); 
     l.setVisible(true); 
    } 
} 

l.setBounds(30,40,450,20); 
for(int i=0,j=0;i<=90;i+=30,j++) 
    jb[j].setBounds(50,80+i,200,20); 
+0

Wenn Sie 'sagen nur letzte Zeile data' Rückkehr tun Sie meinen Sie nur drucken, die letzte Zeile in Ihrer print-Anweisung, oder dass "l" und "jb" nur auf die letzte Zeile gesetzt ist? –

+6

Sie überschreiben die Werte in 'jb' bei jeder Iteration. Das letzte Element in der 'RS' ist das letzte, das in' jb' geschrieben wurde - bis Sie 'jb' verwenden, bleibt nur noch das letzte Element übrig. – ochi

+0

Ich brauche next(), weil ich das nächste Element in der Iteration zurückgegeben werden soll bt es zeigt immer die Daten der letzten Zeile an, wenn ich auf next klicke –

Antwort

0

Sie halten die Werte in jb bei jeder Iteration zu überschreiben. Das letzte Element in RS ist das letzte, geschrieben an jb - bis Sie jb verwenden, bleibt nur noch das letzte Element übrig.

Ich bin mir nicht sicher, wofür Sie die Ergebnisse verwenden müssen, aber Sie können ein 2D-Array von Strings verwenden, um alle Werte zu speichern. Etwas entlang der Linien von:

auf Kommentare Aktualisiert basiert, neues Verständnis der Frage

ResultSet rs = stmt.executeQuery(); 

    // stores the results into a collection 
    List<JRadioButton[]> radioButtonList = new ArrayList<>(); 
    List<JLabel> labelList = new ArrayList<>(); 

    // iterate thru result set   
    while(rs.next()){ 
     // prints to console 
     System.out.println(rs.getInt(1) + " " + rs.getInt(8)); 

     // init label 
     JLabel l = new JLabel(); 
     l.setBounds(30,40,450,20); 

     // set text for label 
     l.setText(rs.getInt(2) + " " + rs.getString(3)); 

     // at least one element, set to visible 
     l.setVisible(true); 

     // store values from rs into an array of radio buttons 
     JRadioButton[] jb = new JRadioButton[5]; 
     jb[0].setText(rs.getString(4)); 
     jb[1].setText(rs.getString(5)); 
     jb[2].setText(rs.getString(6)); 
     jb[3].setText(rs.getString(7)); 

     // store object in list for future use 
     radioButtonList.add(jb); 

     //store label in list 
     labelList.add(l); 
    } 


    // now loop thru the lists 
    for(JRadioButton[] jbArray : radioButtonList){ 
     // your code here - update to suit your needs 
     // jbArray[4].setBounds(50,80,200,20); // not sure what the values should be here 
    } 

    for(JLabel jLabel: labelList){ 
     // your code here - update to suit your needs 
     // jLabel.setBounds(50,80,200,20); // not sure what the values should be here    
    } 
+0

danke für die Antwort .. hier bezieht sich jb auf die radiobuttons und das Ergebnis, das ich bekomme, soll als ein Fragepapier angezeigt werden. –

+0

die Zeichenfolge jbs Sie haben definiert, ich denke jb.? n selbst wenn ich das tue sagt es setText (string) ist nicht definiert für type string. Hilfe PLZ.! –

+0

@p_S Lassen Sie mich die Antwort aktualisieren und sehen, ob ich helfen kann, aber da ich nicht weiß (Sie haben nicht gesagt) was ist ein 'jb' noch wie es definiert ist, kann ich nicht die genaue Lösung geben. Nachdem ich das gesagt habe, geht es in der Antwort nicht darum, Dinge in "jb" zu setzen (und sie herauszubekommen) - es geht um das ResultSet und iterating - was mein Code versucht zu adressieren (und das ist dein ursprüngliches Problem) – ochi

Verwandte Themen