java - 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 添加唯一值。
解决方案
您可以使用ObservableSet来避免添加重复项。
创建集:
ObservableSet<Order> observableSet = FXCollections.observableSet();
添加要设置的新项目(将跳过重复项):
observableSet.add(newOrder);
推荐阅读
- html - HTML 中的“简单”按钮脚本
- reactjs - 从 material-ui 自动完成组合框中清除所有选定的值
- c# - NFC MIFARE Classic 1K 无法读取或写入
- sql-server - 如何用动态列替换 T-SQL PIVOT 中的 NULL 值
- android - 如何在横向使用 ViewPager2 进行轮播布局
- reactjs - 反应钩子关闭问题
- data-visualization - 二次排序(单独)
- spring-boot - 为特定请求暂停骆驼路线
- server - fs mksdirsync 在本地主机中创建文件夹但在服务器中不起作用
- ruby-on-rails - 如何在rails的.erb文件中添加符号(:)