将所有表的行打印到javabook数据库中的TextArea中

时间:2017-11-15 00:08:29

标签: java mysql database javafx

在我的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中打印表的所有行?

1 个答案:

答案 0 :(得分:0)

这是因为您使用setText(),而是使用append()。检查javadoc是否有textarea。