2016-04-15 6 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 + ", "); 
    } 

私はresultadors.getString(i)から値を取得するときに、私はから得るすべてのレコードを持っているべきでVARを持っているので、VAR columnValueを満たすことを望みますrsですが、動作していません。どんな助け?

Iが得る結果は:

(id_tlf、cod_area)

1 + 58、1 + 582 + 104、1 + 582 + 1043 + 60

ように最初の2つの結果がすべての行で繰り返されます。

+0

のおかげのようなものにする最初の行を変更することができ、jTextPane2クリア助けて頂きました! –

+0

***参考:***質問はhttp://stackoverflow.com/questions/36636693/placing-a-com-after-a-rsとして再投稿されました – Andreas

答えて

0

累積された列内の各反復(各外側の反復が空の文字列に再初期化されることなく):

columnValue+=resultado; 

そして、あなたは合計メッセージ各外側の繰り返し蓄積されている:

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

は、私が使用して(Javaの8)StringJoinerをお勧めします、とだけ思い


:-) 1を選択してくださいループの最後に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

私は 'string + = string'をループ。 'StringBuilder()'を使用します。そして二重 ';'を取り除いてください。 – Andreas

+0

@アンドレアス:公正なポイント;よくできた。 – 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テキスト(すでにテキスト区画内にある)を追加します。ここで

columnValue+=resultado; 

あなたはこれがあなたの問題を解決する必要があり

columnValue=resultado; 

を書く必要があります:あなたのforループの中で

は、次のような結果を得るために書きます。

私はあなたを助けてくれることを願っています。

よろしくお願いいたします。 Levkaz

1

多くのString一時的な値を作成すること(彼らは1つのもののためにインサイドキャッシュを汚染する)を好むようにしてください。次に、各列を別のローカル変数に格納する必要はありません。基本的に、私は

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

ような何かをするだろう上記のあなたが追加する予定の場合は、これは本当に、みんなに

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

@アンドレアスあなたが正しいです。ありがとう。編集されました。 –

関連する問題