Buenas tardes, como estan? Estoy batallando con el campo modificar. El codigo funciona; pero por alguna razon, solo modifica y mantiene las modificacione sbajo cietras condiciones; por ejemplo: si s emodifican los 3 campos de un mismo registro, el update impacta. Pero si modificamos solo la cantidad, esa mdoficacion desparece al hacer una nueva modificacion en otro campo. A que puede deberse este comportamiento??
adjunto codigo; desde ya muchas gracias
private void modificar() {
if (tieneFilaElegida()) {
JOptionPane.showMessageDialog(this, "Por favor, elije un item");
return;
}
Optional.ofNullable(modelo.getValueAt(tabla.getSelectedRow(), tabla.getSelectedColumn()))
.ifPresentOrElse(fila -> {
Integer id = Integer.valueOf(modelo.getValueAt(tabla.getSelectedRow(), 0).toString());
String nombre = (String) modelo.getValueAt(tabla.getSelectedRow(), 1);
String descripcion = (String) modelo.getValueAt(tabla.getSelectedRow(), 2);
Integer cantidad = Integer.valueOf(modelo.getValueAt(tabla.getSelectedRow(), 3).toString());
int filasModificadas;
try {
filasModificadas = this.productoController.modificar(nombre, descripcion, cantidad, id);
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
JOptionPane.showMessageDialog(this, String.format("%d item modificado con éxito!", filasModificadas));
}, () -> JOptionPane.showMessageDialog(this, "Por favor, elije un item"));
}
public class ProductoController {
public int modificar(String nombre, String descripcion,Integer cantidad, Integer id) throws SQLException {
Connection con = new ConnectionFactory().recuperaConexion();
Statement statement = con.createStatement();
statement.execute("UPDATE PRODUCTO SET "
+ " NOMBRE = '" + nombre + "'"
+ ", DESCRIPCION = '"+ descripcion + "'"
+ ", CANTIDAD = " + cantidad
+ " WHERE ID = "+ id);
int updateCount = statement.getUpdateCount(); // metodo para saber si algo fue realmente cambiado
con.close();
System.out.println(updateCount);
return updateCount;
}