Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema update sql

Buenas tardes a todos, tengo un problema con mi programa en el cual quiero actualizar unos registros en la base de datos pero no me funciona el update.


Acá les paso el codigo del metodo update:


public void modificarArticulo(int id, String nombre, String descripcion, int stockMinimo, int stockActual) {
Connection miConexion = (Connection) ConexionDB.GetConnection();
// set the preparedstatement parameters
try { // create our java preparedstatement using a sql update query
PreparedStatement ps = miConexion.prepareStatement("UPDATE productos SET "
+ "nombre = ?, "
+ "descripcion = ?, "
+ "stockMinimo = ?, "
+ "stockActual = ? "
+ "WHERE id = ?");
// set the preparedstatement parameters
ps.setString(1, nombre);
ps.setString(2, descripcion);
ps.setInt(3, stockMinimo);
ps.setInt(4, stockActual);
ps.setInt(5, id);

JOptionPane.showMessageDialog(null, "Los datos a actualizar son:\n \n "
+ "Indice '"+id+"'\n "
+ "Nombre '"+nombre+"'\n "
+ "Descripcion '"+descripcion+"'\n "
+ "Stock Minimo '"+stockMinimo+"'\n "
+ "Stock Actual '"+stockActual+"'");

// call executeUpdate to execute our sql update statement
ps.executeUpdate();
ps.close();
JOptionPane.showMessageDialog(null, "Datos actualizados correctamente");
}

catch (SQLException e) {
JOptionPane.showMessageDialog(null, "No se pudo actualizar el registro");
}
}

En este metodo el progama ejecuta la consulta update, pero no tiene efecto en la tabla, osea, me dice que los datos fueron actualizados correctamente, pero en realidad no se actualizo nada.

Y este codigo que dejo acá abajo, es el metodo que llama al metodo de actualizar:


if (botonPrecionado == "ModificarProducto") {
//INSTANCIO UN OBJETO ARTICULO
Articulo prod = new Articulo();
mostrarCamposEnEdits();

int id = Integer.parseInt(jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString());
String nombre = jTextField2.getText();
String descripcion = jTextField3.getText();
int stockMinimo = Integer.parseInt(jTextField4.getText());
int stockActual = Integer.parseInt(jTextField5.getText());

prod.modificarArticulo(id, nombre, descripcion, stockMinimo, stockActual);

cargarTablaProductos();
blanqueoCampos();
}

Eternamente agradecido con quienes me puedan ayudar con este tema.

Muchas gracias.
Saludos.

octubre 10, 2014 | Registered Commenternmenna10

Ese mensaje "Datos actualizados correctamente" no es exacto: lo que muestra es que no se han producido errores de SQL, no que se hayan actualizado los datos en la base de datos.

El método executeUpdate() devuelve un valor:

int actualizadas = ps.executeUpdate();

donde la variable actualizadas contiene el número de filas de la base de datos que se han actualizado.
Sospecho que en tu caso ese valor será cero filas, por lo que es muy probable que no encuentre ninguna para actualizar, porque el id, que se le pasa a la cláusula de restricción WHERE, no existe.

octubre 10, 2014 | Registered Commenterchoces

Hola choces, no entiendo lo que me estas diciendo...
Comprendo que el excecuteUpdate me devuelve un valor, pero no entiendo lo del ID, verifique y el id que le paso existe el la tabla... como deberia implementar el metodo sino??

Muchas gracias.

octubre 10, 2014 | Registered Commenternmenna10

¿Qué valor devuelve ese executeUpdate?

octubre 11, 2014 | Registered Commenterchoces