【问题标题】:print all the rows of of table into TextArea in javabook database将表的所有行打印到 javabook 数据库中的 TextArea
【发布时间】:2025-12-05 01:00:02
【问题描述】:

在我的 GUI 中,有“搜索”菜单项,它应该在 Faculty 表中搜索 ssn 编号并将它们打印到 javabook 数据库中的 TextArea 中。但是,我只得到有 15 行的表的最后一行。 这是调用 searchDB 方法的 Search menuItem。

MenuItem search = new MenuItem("Search");
    search.setOnAction((ActionEvent t) -> {
        try{
            searchDB(tArea);
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    });

这里是 searchDB 方法。

public void searchDB(TextArea tArea) throws SQLException, ClassNotFoundException {
    if (databaseName != null) {
        TextInputDialog dialog = new TextInputDialog();
        dialog.setContentText("Please enter Faculty ssn number follwing by %");
        Optional<String> search_id = dialog.showAndWait();

        try {

            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/" +databaseName+ "?autoReconnect=true&useSSL=false", "scott", "tiger");
            Statement statement = connection.createStatement();       
            ResultSet resultSet = statement.executeQuery("select * from Faculty where ssn like '" + search_id.get() + "';");               

            while (resultSet.next())
                tArea.setText(resultSet.getString(1) + "\t" + resultSet.getString(2) + "\t" + resultSet.getString(4) + "\t" + resultSet.getString(5));

        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

你能解释一下为什么我只得到表格的最后一行吗?以及如何在TextArea中打印表格的所有行?

【问题讨论】:

    标签: java mysql database javafx


    【解决方案1】:

    这是因为您使用的是setText(),请改用append()。检查 javadoc 的 textarea。

    【讨论】:

    • 我想你的意思是appendText()(你链接了JTextArea的文档)。
    • @James_D 是的,我的意思不是 append(),appendText() 已被贬值,我已将链接更新为指向 TextArea,谢谢。
    • 它没有被弃用。现在你正在链接java.awt.TextArea
    • 这是因为他使用的是 TextArea 而不是 JTextArea 这就是为什么链接到 java.awt.TextArea
    • 但这是一个 JavaFX 问题。为什么要链接 Swing 或 AWT 文档?