With this first algorithm you can build the statement that would allow you to modify the value of interest in the database. One at a time.
public void actualizarBD(int id, String valor, int columna){
String sentencia = "UPDATE zapateria.productos SET ";
switch(columna){ // se concatena la sentencia de modificar la tabla con la columna de interes
case 0:
sentencia += "SUELA = '"+valor+"' ";
break;
case 1:
sentencia += "COLOR = '"+valor+"' ";
break;
// Agregar el resto de las columnas. Ignoradas por simplicidad
default:
break;
}
// Se coloca la ultima parte de la sentencia
sentencia += "WHERE id = "+id+";";
System.out.println("sentencia : "+sentencia);
}
Subsequently a listener is added to the table specifically to the DefaultTableModel, which is the one that contains the data of the same, to know if there was any change and where it changed and what new value was added.
// Se agrega un evento que escuche cada vez que cambie un campo en la tabla grafica
tabla.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) { // se obtiene la fila y columna del elemento que cambio
int fila = e.getFirstRow();
int columna = e.getColumn();
String valor = (String) tabla.getModel().getValueAt(fila, columna); // se obtiene el valor que cambio
System.out.println("fila: "+fila);
System.out.println("columna: "+columna);
System.out.println("valor: "+valor);
new Conexion().actualizarBD(1, valor, columna); // se actualiza la base de datos por cada elemento que cambie
// Se necesitaria una ventana de confirmacion
}
});
Any improvement you can add is valid as long as you get what you need and your doubts are solved.