我希望将我的完整结果集显示到我的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();
}
但是这只给了我结果集的第一个字符串,我怎样才能获得完整的结果集?
答案 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。