[英]Javafx update database with tableview
我创建了一个脚本,该脚本将创建并填充数据到tableview(我已经使用了场景构建器作为tableview)。 它的列是动态的,具体取决于mysql表的列数。 但是我找不到关于如何将数据编辑/插入到tableview以及自动更新MySQL表的任何解决方案。
这是我的代码,用于动态列并从数据库向其中填充数据。 顺便说一句,我正在使用的数据库表有50列。
data = FXCollections.observableArrayList();
try {
c = DBConnect.connect();
//SQL FOR SELECTING ALL OF CUSTOMER
String SQL = "SELECT * from CAM_ODS_TIMESHEET_RAW_MOD";
//ResultSet
ResultSet rs = c.createStatement().executeQuery(SQL);
/**
* ********************************
* TABLE COLUMN ADDED DYNAMICALLY *
* ********************************
*/
for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
//We are using non property style for making dynamic table
final int j = i;
TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i + 1));
col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
tableview.getColumns().addAll(col);
System.out.println("Column [" + i + "] ");
}
/**
* ******************************
* Data added to ObservableList *
* ******************************
*/
while (rs.next()) {
//Iterate Row
ObservableList<String> row = FXCollections.observableArrayList();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
//Iterate Column
if (rs.getString(i) == null) {
row.add("");
} else {
row.add(rs.getString(i));
}
}
System.out.println("Row [1] added " + row);
data.add(row);
}
//FINALLY ADDED TO TableView
tableview.setItems(data);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error on Building Data");
}
我也看到了多个使用Model的示例,例如Person类等,但是我想知道如何将其用于多个列(例如50列)
预先感谢您的帮助! :)
听起来像您的要求,就像做MYSQL表的FX GUI。 如果要执行此操作,则需要为obserbleList添加一个changlistener,并将SQL插入/更新/删除逻辑添加到其中。
ObservableList.addListener(ListChangeListener<? super E> listener)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.