从ResultSet中获取结果的麻烦

时间:2016-04-15 00:37:09

标签: java sql resultset

如何让var包含从结果集中获得的所有记录?

到目前为止,我有这段代码:

    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 columnValue以便我有一个var,它应该包含我从rs获得的所有记录,但是不管用。有什么帮助吗?

我得到的结果是:

  

(id_tlf,cod_area)

     

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

如您所见,前两个结果在每一行重复

4 个答案:

答案 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