我是 Java 新手,因此对于长期的 Java 程序员来说这可能是一个简单的问题。
无论如何,我的问题是使用JTable。我想要在该 JTable 中加载/保存数据。问题是我不确定如何以某种方式保存用户更改的单元格。
我的点击事件如下所示:
@SuppressWarnings("serial")
class EditableTableModel extends AbstractTableModel {
String[] columnTitles;
Object[][] dataEntries;
int rowCount;
public void setValueAt(Object value, int row, int column) {
//Any change to the table
dataEntries[row][column] = value;
}
}
每当我更改 jTable 中的任何单元格时,此函数都会正常启动。它还为我提供了该已编辑单元格的行号和列号,当然还有更改为的值。但我的问题是:
How would I go about saving this data into my database if its just a cell value at a time?
我的数据库结构如下所示(与 jTable 结构具有相同的布局/顺序):
ID | Data_script | data_status | data_users | data_error | data_rundate | lastUserWhoMod
-------------------------------------------------------------------------------------------
1 | Inquiries | Passed | Bob | No errors | 01/20/2019 | Bob
2 | Reporting | Passed | Jenny | No errors | 01/20/2019 | Bob
3 | Background | Failed | Bob | Lines 4,8 | 01/20/2019 | Jenny
4 | Maintenance | Passed | George | No errors | 01/20/2019 | Bob
举个例子,如果我将第一行第三列(即data_users)从Jenny更改为George,那么我将如何映射该到数据库以便将其保存在正确的位置(行、列)?
最佳答案
还需要考虑 table_key(pk 假设 id)。
public void setValueAt(Object value, int row, int column) {
Object obj_key = dataEntries[row][0]; //assume id
//Any change to the table
dataEntries[row][column] = value;
//obj_key mapped inside method from Object to int
//get appropriate field_name from column index
run_sql(obj_key, row, column)
}
原始更新查询
update table_name
set [computed_field_name] = column_new_value (dataEntries[row][column])
where id = obj_key
由于您预先知道了 col 对应的名称,因此还需要正确设置 field_name(如果 col=1 则 data_script ...等)
关于Java JTable 一次将一个单元格保存到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54350544/