mysql在javafx中向tableview添加重复数据

lb3vh1jj  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(296)

我还想使用observable list将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 stage上的一个按钮。orderslist是表视图,orders是可观察的列表。
但是,问题是,当多次单击refresh page按钮时,它会从数据库中一次又一次地添加相同的行,我只希望它从数据库中向tableview添加唯一的值。

rxztt3cl

rxztt3cl1#

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

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

向集合添加新项(将跳过重复项):

observableSet.add(newOrder);

相关问题