【问题标题】:mySQL adding duplicate data to TableView in JavaFXmySQL在JavaFX中将重复数据添加到TableView
【发布时间】:2020-12-03 16:00:03
【问题描述】:

我还想使用可观察列表将数据从 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 是 observable 列表。

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

【问题讨论】:

  • minimal reproducible example 请.. 用硬编码数据模拟数据库连接(在确定数据库访问按预期返回值之后:)
  • .. 并坚持 java 命名约定!
  • 我模拟了数据库连接并且它工作正常,我希望它在我再次单击按钮时不会添加相同的数据
  • 听起来您的数据库中有重复项...

标签: java mysql database javafx


【解决方案1】:

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

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

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

observableSet.add(newOrder);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 2017-10-02
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2016-10-30
    相关资源
    最近更新 更多