首页 > 解决方案 > mySQL在JavaFX中将重复数据添加到TableView

问题描述

我还想使用可观察列表将数据从 mySql 数据库添加到表视图,使用“刷新按钮”,每次单击时都会向表视图添加新行。这是代码:

 public void refreshPage(){

    Order curOrder = ordersList.getSelectionModel().getSelectedItem();

    ordersList.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    String query = "SELECT orderID, orderStatus, orderTotalCost FROM ORDERS";
    try {

        DatabaseConnection DBconn = new DatabaseConnection();
        connection = DBconn.getDatabaseLink();
        //  connection = DatabaseConnection.getConnection();
        statement = connection.createStatement();
        resultSet = statement.executeQuery(query);
        while (resultSet.next()){
                    Order newOrder = new Order(resultSet.getString("orderID"), resultSet.getString("orderStatus"), resultSet.getDouble("orderTotalCost"));
                    orders.add(newOrder);
        }

        ordersList.setItems(orders);



    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
}

refreshPage() 链接到 javaFX 舞台上的按钮。ordersList 是 tableView,orders 是可观察的列表。

但是,问题是当多次单击刷新页面按钮时,它会一遍又一遍地从数据库中添加相同的行,我只希望它从数据库中向 tableview 添加唯一值。

标签: javamysqldatabasejavafx

解决方案


您可以使用ObservableSet来避免添加重复项。
创建集:

ObservableSet<Order> observableSet = FXCollections.observableSet();

添加要设置的新项目(将跳过重复项):

observableSet.add(newOrder);

推荐阅读