如何解决如何从数据库中获取多行并将其全部显示在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变量中,如下所示:
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()之前通过代码设置大小,边界,布局等!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。