Java 如何从数据库中获取多行并在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

如何从数据库中获取多行并在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()之前通过代码设置大小、边界、布局等

我试过你的第二个选择。它在textArea上起作用了!谢谢,所以muchI也尝试了第一个选项,但它不会转到下一行,即使使用“\n”,大多数人也会在
JTable
中显示结果,因此数据以行和列的形式显示。请参阅:以获取一般示例。另外,不要使用空的catch块。您永远不会知道何时会出现SQL异常。