actualizar/UPDATE base de datos desde java
Todo estaba bien en mi base de datos, podia consultar y guardar registros, hasta que decidi empezar a actualizar utlizando el comando UPDATE; el programa esta hecho en el lenguaje java, cuando intento actualizar el registro me tira el siguiente error:
java.sql.SQLException : parameter index out of range (5> number of parameters, with is 4).
el nombre de la tabla es producto y tiene 5 campos: id, nombre, proveedor, precio, cantidad; todos los campos son tipo varchar.
el codigo del boton modificar es el siguiente:
String sSQL = "";
conectate mysql = new conectate();
Connection cn = mysql.getConnection();
String Id, nom, prov, pre , cant;
Id= txtid.getText();
nom= nombre.getText();
prov= proveedor.getText();
pre= precio.getText();
cant= cantidad.getText();
sSQL = "UPDATE producto " +
"SET nombre = ?," +
"proveedor = ?," +
"precio = ?," +
"cantidad = ?," +
"WHERE id = "+id_actualizar;
/** id_actualizar es una variable de clase y se implementa en el metodo BuscarEditar(String id) donde toma el valor del parametro de dicho metodo*/
String mensaje = "Los datos se han Modoficado de Manera Satisfactoria...";
try
{
PreparedStatement pst = cn.prepareStatement(sSQL);// con esta sentencia se insertan los datos en la base de datos
pst.setString(1, Id);
pst.setString(2, nom);
pst.setString(3, prov);
pst.setString(4, pre);
pst.setString(5, cant);
int n = pst.executeUpdate();//valida si se guardaron los datos; si pst>0 entonces se guardaron
if(n > 0)
{
JOptionPane.showMessageDialog(null, mensaje);
CargarTabla("");//l momento de agregar un nuevo registro, actualiza la tabla
}
}
catch (SQLException ex)
{
JOptionPane.showMessageDialog(null, ex);
}
Seguire investigando para ver como lo soluciono, a todos los que respondan gracias.
- Inicie sesión o regístrese para enviar comentarios
Tienes:
Tienes:
Peeeero debería ser:
Elimino el primer parámetro, porque no está definido en tu query, o sea que sobra, la excepción dice que te estás pasando por un parámetro. Así lo defines en tu consulta, checa los nombres de los parámetros con los respectivos valores que envías.
una pregunta
Hola buen dia, esta bien como hace el update, no cae uno en eso de que puedan hacer un inject??
Supongo que 4 años después o
Supongo que 4 años después o lo habrán despedido por hacer código como si fuera ingeniero de Sony, o ya cambió la forma de hacer sus actualizaciones, o ya cambió de lenguaje.
y cual seria la mejor forma??
Para evitar problemas con inyecciones, cual seria la mejor forma de hacer actualizaciones o guardar datos??? gracias
Haciendo a un lado que éste
Haciendo a un lado que éste tema se resolvió desde el 2012 ( o corrieron al desarrollador, no lo sé) es conveniente tres cosas.
Saludos.