Tuve la misma situación que muchos de nosotros, resultaba que las MODIFICACIONES que realizaba, solo se logran realizar si al realizar el la corrección, click fuera de la fila y luego click en modificar, pero creo que ese no es el caso.
Pues resulta que investigando un poco me di cuenta que se podría tratar de algo no previsto en la forma en que la interfaz interactúa con la tabla en MySQL y cómo maneja los eventos.
Al continuar con la búsqueda de esta situación y la vez haciendo uso de I.A., esta me sugiere que "...Este comportamiento es que el evento de edición de celda en la tabla podría no estar disparándose de inmediato al realizar una modificación. En muchos entornos gráficos, los cambios en una celda no se reflejarán en el modelo de datos subyacentes hasta que la edición de la celda se complete o se salga de la celda editada.
Cuando se hace clic fuera de la celda editada, es posible que se desencadene el evento de finalización de edición, lo que actualiza el modelo de datos de la tabla con el nuevo valor editado. Luego, cuando presiones el botón de modificar, estás leyendo los datos actualizados del modelo y realizando la modificación en la base de datos..."
Aunado a lo anterior, me realizo una sugerencia, la cual te comparto:
"...Para mejorar esta experiencia y evitar la necesidad de hacer clic fuera de la fila modificada antes de presionar el botón de modificar, puede intentar forzar la finalización de la edición de la celda cuando se presione el botón de modificar. Limpie esto llamando al método table.getCellEditor().stopCellEditing()antes de realizar la modificación en la base de datos. Esto asegurará que cualquier cambio en la celda se aplique antes de que se realice la modificación en la base de datos..."
**Aquí hay un ejemplo de cómo yo implemente mis métodos Modificar en ambas clases del proyecto, cabe destacar que busque muchas soluciones a la situación de lograr que los cambios se guardaran y no tenia resultado, hasta que ingrese al foro y vi que esta particularidad de la interfaz era en si el problema y no la forma en la que nosotros estábamos tratando de implementar nuestros métodos: **
Código:
public int modificar(String nombre, String descripcion, Integer cantidad, Integer id) throws SQLException {
// Establecer una conexión a la base de datos
ConnectionFactory factory = new ConnectionFactory();
Connection con = factory.recuperaConexion();
try {
// Crear la consulta SQL parametrizada para actualizar un producto
String query = "UPDATE PRODUCTO SET NOMBRE = ?, DESCRIPCION = ?, CANTIDAD = ? WHERE ID = ?";
PreparedStatement preparedStatement = con.prepareStatement(query);
preparedStatement.setString(1, nombre); // Establecer el valor del parámetro 'NOMBRE'
preparedStatement.setString(2, descripcion); // Establecer el valor del parámetro 'DESCRIPCION'
preparedStatement.setInt(3, cantidad); // Establecer el valor del parámetro 'CANTIDAD'
preparedStatement.setInt(4, id); // Establecer el valor del parámetro 'ID'
// Ejecutar la consulta y obtener el número de filas afectadas
int updateCount = preparedStatement.executeUpdate();
// Devolver el número de filas modificadas
return updateCount;
} finally {
// Cerrar la conexión a la base de datos
con.close();
}
}