如何从数据库中获取多行并将其全部显示在jTextArea或jLabel中



如何从数据库中获取多行并将其全部显示在jTextArea或jLabel中?

try{
String url = "jdbc:mysql://localhost/sched";
Connection conn= DriverManager.getConnection(url,"root", "");
Statement stmt =conn.createStatement();
String classif=comboClass.getSelectedItem().toString();
String sqlSelect="select * from doctorsched where class = '"+classif+"'";
ResultSet rs= stmt.executeQuery(sqlSelect);
while(rs.next()){
String docsName=rs.getString("docsName");
String room=rs.getString("room");
jTextArea1.setText(docsName+" (room "+room+") n");
}
}catch(Exception e){
}

当我使用此代码时,jTextArea1只显示数据库最后一行或最后一行的数据。从头开始的其余部分不可见。如果我使用jLabel,我相信它也会以这种方式工作。这两个(jLabel和jTextArea(是我唯一的选择。

如果有人能帮助我,我将不胜感激。非常感谢。

您需要为每个结果动态创建Jlabel,因为您将所有结果保存在同一个Jlabel中,所以每次调用.setText("(时都会删除以前的文本并放入新的文本。示例:

你有你的JFrame或JPanel或任何集装箱

JFrame frame = new JFrame("Frame");

然后在每一个结果中,你都应该这样做:

while(rs.next()){
String docsName=rs.getString("docsName");
String room=rs.getString("room");
JLabel tempLabel = new JLabel();
tempLabel.setText(docsName + " (room" + room + ")");
frame.add(tempLabel);
}

如果您只想使用一个JLabel,另一个选项是将所有结果连接到一个字符串变量中,如下所示:

String finalText = "";
while(rs.next()){
String docsName=rs.getString("docsName");
String room=rs.getString("room");
finalText += docsName + " (room" + room + ")n";

}
jTextArea1.setText(finalText);

我希望这对你有帮助,问候。

编辑:如果您动态创建JLabel,请记住在执行frame.add((之前通过代码设置大小、边界、布局等!!

最新更新