Java JTable一次将单个单元格保存到数据库

Java JTable一次将单个单元格保存到数据库,java,sql,sqlite,sql-update,jtable,Java,Sql,Sqlite,Sql Update,Jtable,我是Java新手,所以对于长期从事Java编程的人来说,这可能是一个简单的问题 无论如何,我的问题是如何使用JTable。我想加载/保存该JTable中的数据。问题是,我不确定如何保存用户以某种方式更改的单元格 单击事件看起来像我拥有的: @SuppressWarnings("serial") class EditableTableModel extends AbstractTableModel { String[] columnTitles; Object[][] data

我是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中的任何单元格时,此函数都会正常启动。它还提供了该编辑单元格中的行号和列号,当然还有更改为的值。但我的问题是:

如果一次只保存一个单元格值,我将如何将该数据保存到数据库中?

我的数据库结构如下所示(与jTable结构具有相同的布局/顺序):

因此,作为一个例子,如果我将第一行第三列数据用户Jenny更改为George,那么我如何映射到数据库,以便将其保存在正确的位置(行、列)

  • 添加一个变量

    int lastChanged=0

  • 在setValueAt中,添加

    lastChanged=行

  • 并在一个单独的线程中调用一个函数来更新整个记录的数据库,lastChanged指出。该函数必须将lastChanged的值重置为-1。
    对DB的调用必须在单独的线程中执行,因为StValueEnter将在线程java中执行GUI的执行。

    需要考虑Table键(PK假定ID)。 原始更新查询

    update table_name
    set [computed_field_name] = column_new_value (dataEntries[row][column])
    where id = obj_key
    
    由于您预先知道COL的对应名称,因此还需要正确设置
    字段名称(如果col=1,那么数据脚本…等等)

    对不起,这对我来说没有多大意义。我想知道为了保存那个单元格,查询需要是什么。
    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