将ResultSet放入JTxtField

时间:2016-05-12 21:13:08

标签: java swing jtextfield resultset

我希望将我的完整结果集显示到我的JTxtField中,但我知道该怎么做。

这是我的代码目前:

    try{
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        conn3 =     DriverManager.getConnection("jdbc:sqlserver://ARTURO-LAPTOP;user=sa;password=sacompusis;database=PDV");
        st3 = conn3.createStatement();
        rs3= st3.executeQuery("SELECT Nombre_Pdv, SUM(Total) AS Expr1 FROM   VENTA_PLATILLOS GROUP BY Nombre_Pdv");

        while(rs3.next()){
            txt.setText(rs3.getString(1));
        }

    }
    catch(Exception e){
        e.printStackTrace();
    }

但是这只给了我结果集的第一个字符串,我怎样才能获得完整的结果集?

1 个答案:

答案 0 :(得分:4)

你的while循环可能正在为JTextField设置多个字符串,但只有一个会显示 - 最后一个设置为JTextField的文本,因为它会覆盖之前添加的所有文本。

如果你必须在JTextField中显示所有字符串,然后创建一个StringBuilder对象,并在while循环中,追加你进入StringBuilder的ResultSet文本,然后在while循环之后,使用StringBuilder中的toString()作为JTextField的文本。如,

StringBuilder sb = new StringBuilder();
while(rs3.next()){
    sb.append(rs3.getString(1) +"; ");
}
txt.setText(sb.toString());

更好:在JTextArea中显示文本,并使用"\n"将其附加到while循环中。

StringBuilder sb = new StringBuilder();
while(rs3.next()){
    sb.append(rs3.getString(1) +"\n");
}
myTextArea.setText(sb.toString());

更好的是:通过创建一个TableModel来显示JTable中的整个ResultSet数据,可以从AbstractTableModel派生灵活性,也可以使用DefaultTableModel轻松派生,然后使用while循环将ResultSet中的行添加到模型中,然后设置JTable具有此创建和填充模型的TableModel。