2016-04-15 7 views
0

Wie kann ich eine Variable haben, die alle Datensätze enthält, die ich von einer Ergebnismenge bekomme?Probleme beim Einlesen der Ergebnisse von ResultSet

Bisher habe ich diesen Code:

while (rs.next()) { 
     for (int i = 1; i <= columnCount; i++) { 
      String resultado = ""; 
      resultado = rs.getString(i); 
      columnValue += resultado; 
     } 
     jTextPane2.setText(jTextPane2.getText() + columnValue + ", "); 
    } 

Ich möchte, dass, wenn resultado den Wert aus dem rs.getString(i) bekommt, columnValue die var füllt, so dass ich eine var haben, die alle Datensätze haben sollte ich von der get rs, aber funktioniert nicht. Irgendeine Hilfe?

Das Ergebnis I erhalten ist:

(id_tlf, cod_area)

1 + 58, 1 + 582 + 104, 1 + 582 + 1043 + 60

um Sie sehen, die ersten 2 Ergebnisse in jeder Zeile wiederholen

+0

Vielen Dank an alle, das ist wirklich half mir! –

+0

*** FYI: *** Frage neu veröffentlicht als http://stackoverflow.com/questions/36636693/placing-a-coma-after-a-rs – Andreas

Antwort

0

Sie sind die Akkumulation der Spalte Wert jeder inneren Iteration (ohne Neuinitialisierung in die leere Zeichenfolge jeder äußeren Iteration):

columnValue+=resultado; 

Und Sie Akkumulation sind die Gesamtnachricht jede äußere Iteration:

jTextPane2.setText(jTextPane2.getText() + columnValue + ", "); 

Wählen Sie eine :-)


Ich würde empfehlen, mit (Java 8) StringJoiner, und nur Aktualisierung jTextPane2 am Ende der Schleife:

StringJoiner sj = new StringJoiner(", "); 
while (rs.next()) { 
    StringBuilder columnValue = new StringBuilder(); 
    for (int i = 1; i <= columnCount; i++) { 
     columnValue.append(rs.getString(i)); 
    } 
    sj.add(columnValue.toString()); 
} 
jTextPane2.setText(sj.toString()); 
+0

Ich würde nicht tun, "String + = String" in a Schleife. Verwenden Sie einen 'StringBuilder()'. Und entfernen Sie das Doppel-';'. – Andreas

+0

@Andreas: Messepunkt; gut gemacht. – AJNeufeld

0

nicht sicher, ob ich richtig verstanden, aber es könnte so etwas wie diese:

while (rs.next()) { 
    for (int i = 1; i <= columnCount; i++) { 
     String resultado = ""; 
     resultado = rs.getString(i); 
     columnValue+=resultado; 
    } 
    columnValue+=", "; 
} 
jTextPane2.setText(columnValue); 
+0

Ich würde nicht 'string + = string' in einer Schleife zu tun empfehlen. Verwenden Sie einen 'StringBuilder()'. – Andreas

0

Ihr Problem ist Ihr Column und Ihre JTextPane.

Wenn Sie den Text zu Ihrem jTextPane hinzufügen möchten, fügen Sie den Text, den Sie bereits in der Texttafel haben, hinzu und fügen den Text columnValue hinzu (der sich bereits in der Textfläche befindet).

Innerhalb Ihrer for-Schleife, schreiben Sie die folgenden, um das Ergebnis zu erhalten:

columnValue+=resultado; 

Hier sollten Sie

schreiben
columnValue=resultado; 

Dieses Ihr Problem beheben sollte.

Ich hoffe, dass ich Ihnen helfen konnte.

Mit freundlichen Grüßen. Levkaz

1

Bitte bevorzugen Sie eine StringBuilder zu erstellen viele String temporäre Werte (sie verschmutzen den internen Cache für eine Sache). Als Nächstes müssen Sie nicht jede Spalte in einer anderen lokalen Variablen speichern.Grundsätzlich würde ich so etwas wie

StringBuilder sb = new StringBuilder(); 
while (rs.next()) { 
    for (int i = 1; i <= columnCount; i++) { 
     if (i != 1) { 
      sb.append(", "); 
     } 
     sb.append(rs.getString(i)); 
    } 
    sb.append(System.lineSeparator()); 
} 
jTextPane2.setText(sb.toString()); 

Hinweis oben tun die jTextPane2 löscht, wenn Sie zu anhängen beabsichtigen, dann könnte man die erste Zeile ändern, um so etwas wie

StringBuilder sb = new StringBuilder(jTextPane2.getText()); 
sb.append(System.lineSeparator()); // <-- start the next line... and then iterate rs 
+1

'rs.getString (i)' wird für 'i = 0' fehlschlagen. JDBC-Parameter sind 1-basiert. – Andreas

+0

@Andreas Sie haben Recht. Vielen Dank. Bearbeitet. –