2016-04-15 102 views
0

如何獲取包含從結果集中獲取的所有記錄的var?從ResultSet中獲取結果的問題

到目前爲止,我有這樣的代碼:

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

我想,當resultado得到來自rs.getString(i)價值,填補了VAR columnValue讓我應該有我從一開始記錄的VAR rs,但不起作用。任何幫助?

結果我得到的是:

(id_tlf,cod_area)

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

以便你會看到,前兩個結果在每一行中重複出現

+0

感謝大家,這真的幫助過我! –

+0

*** FYI:***問題轉貼爲http://stackoverflow.com/questions/36636693/placing-a-coma-after-a-rs – Andreas

回答

0

您正積累每個內部迭代的列值(不重新初始化爲每個外部迭代的空字符串):

columnValue+=resultado; 

而你是積累的總消息中的每個外部循環:

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

選擇一個:-)


我推薦使用(Java 8)StringJoiner,只有在循環結束時更新jTextPane2

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

我建議不要在字符串+ =字符串在一個循環。使用'StringBuilder()'。並刪除雙';'。 – Andreas

+0

@Andreas:公平點;製作精良。 – AJNeufeld

0

不知道我的理解對不對,但也可能是這樣的:

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

我建議不要在循環中執行'string + = string'。使用'StringBuilder()'。 – Andreas

0

你的問題是你columnValue和你的JTextPane。

當您想要將文本添加到您的jTextPane中時,您將添加文本框中已有的文本,並添加添加columnValue文本(已經在文本窗格中)。

在您的for循環,你寫的下面,以獲得結果:

columnValue+=resultado; 

在這裏,你應該寫

columnValue=resultado; 

這應該可以解決您的問題。

我希望我能幫助你。

此致敬禮。 Levkaz

1

請優先使用StringBuilder創建大量的String臨時值(它們會污染實習生緩存的一件事)。接下來,您不需要將每列存儲在另一個局部變量中。基本上,我會做類似

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()); 

注意上述清除jTextPane2,如果你打算追加,那麼你可以在第一線更改爲喜歡的東西

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

'rs.getString(i)'將失敗'i = 0'。 JDBC參數是基於1的。 – Andreas

+0

@Andreas你是對的。謝謝。編輯。 –