如何让var包含从结果集中获得的所有记录?
到目前为止,我有这段代码:
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 :(得分: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 :(得分: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());
答案 2 :(得分:0)
不确定我是否理解正确,但它可能是这样的:
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
String resultado = "";
resultado = rs.getString(i);
columnValue+=resultado;
}
columnValue+=", ";
}
jTextPane2.setText(columnValue);
答案 3 :(得分:0)
你的问题是你的columnValue和你的jTextPane。
如果要将文本添加到jTextPane,则要添加textpane中已有的文本,并添加columnValue文本(已在textpane中)。
在for循环中,编写以下内容以获得结果:
columnValue+=resultado;
在这里你应该写
columnValue=resultado;
这可以解决您的问题。
我希望我可以帮助你。
祝你好运。 Levkaz