Java 如何从数据库中获取多行并在jTextArea或jLabel中全部显示?
如何从数据库中获取多行并在jTextArea或jLabel中显示所有行Java 如何从数据库中获取多行并在jTextArea或jLabel中全部显示?,java,sql,swing,jlabel,jtextarea,Java,Sql,Swing,Jlabel,Jtextarea,如何从数据库中获取多行并在jTextArea或jLabel中显示所有行 try{ String url = "jdbc:mysql://localhost/sched"; Connection conn= DriverManager.getConnection(url,"root", ""); Statement stmt =conn.createStatement(); String classif=comboClass.ge
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()之前通过代码设置大小、边界、布局等 我试过你的第二个选择。它在textArea上起作用了!谢谢,所以muchI也尝试了第一个选项,但它不会转到下一行,即使使用“\n”,大多数人也会在
JTable
中显示结果,因此数据以行和列的形式显示。请参阅:以获取一般示例。另外,不要使用空的catch块。您永远不会知道何时会出现SQL异常。