java - 如何从数据库中获取多行并将其全部显示在 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)是我唯一的选择。
如果有人可以帮助我,我将非常感激。谢谢你。
解决方案
您需要为每个结果动态创建 JLabels,因为您将所有内容保存在同一个 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() 之前通过代码设置大小、边界、布局等!
推荐阅读
- javascript - 如何根据它的字段值设置行颜色。来自asp.net中的客户端
- android - 读取 Microsoft Word 文档时出现 Android Apache POI 错误:org.apache.xmlbeans.SchemaTypeLoaderException Cannot resolve type for handle
- flutter - 如何预缓存颤振耀斑动画
- python - 基于另一个模型更新一个模型的外键
- php - 如何在 php echo 输出中使用 css 样式
- javascript - 有没有办法在头像按钮下方放置文字“取消”和“确定”?我的意思是头像和文字在点击时需要是可按下的
- ruby-on-rails - Rails 显示错误“未初始化的常量 URI::Generic”
- powershell - 多个 io.filesystemwatchers 并行
- python - python将py转换为在Windows上工作的ubuntu中的exe
- asp.net-core - 如何更改 EF Core Select 中的字段值