Foros del Web » Programación para mayores de 30 ;) » Java »

Actualizar/UPDATE base de datos desde java

Estas en el tema de Actualizar/UPDATE base de datos desde java en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/06/2012, 12:28
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta 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:

Código java:
Ver original
  1. String sSQL = "";
  2.         conectate mysql = new conectate();
  3.         Connection cn = mysql.getConnection();
  4.         String Id, nom, prov, pre , cant;
  5.           Id=  txtid.getText();
  6.           nom=  nombre.getText();
  7.            prov= proveedor.getText();
  8.            pre= precio.getText();
  9.            cant= cantidad.getText();
  10.            
  11.            sSQL = "UPDATE producto " +
  12.                     "SET nombre = ?," +
  13.                     "proveedor = ?," +
  14.                     "precio = ?," +
  15.                    "cantidad = ?," +
  16.                     "WHERE id = "+id_actualizar;
  17. /** 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*/
  18.       String  mensaje = "Los datos se han Modoficado de Manera Satisfactoria...";
  19.      
  20.       try
  21.         {
  22.             PreparedStatement pst = cn.prepareStatement(sSQL);// con esta sentencia se insertan los datos en la base de datos
  23.             pst.setString(1, Id);
  24.             pst.setString(2, nom);
  25.             pst.setString(3, prov);
  26.             pst.setString(4, pre);
  27.             pst.setString(5, cant);
  28.             int n = pst.executeUpdate();//valida si se guardaron los datos; si pst>0 entonces se guardaron
  29.  
  30.             if(n > 0)
  31.             {
  32.                 JOptionPane.showMessageDialog(null, mensaje);
  33.                 CargarTabla("");//l momento de agregar un nuevo registro, actualiza la tabla
  34.             }
  35.         }
  36.         catch (SQLException ex)
  37.         {
  38.             JOptionPane.showMessageDialog(null, ex);
  39.         }
Seguire inventigando por mi cuenta a ver si lo soluciono, gracias a los que respondan.
  #2 (permalink)  
Antiguo 01/06/2012, 13:31
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 11 años, 11 meses
Puntos: 19
Respuesta: Actualizar/UPDATE base de datos desde java

El error está en que tu query tiene 4 columnas en el SET: nombre, proveedor, precio y cantidad

Código Java:
Ver original
  1. sSQL = "UPDATE producto " +12.
  2.             "SET nombre = ?," +13.
  3.             "proveedor = ?," +14.
  4.             "precio = ?," +15.
  5.             "cantidad = ?," +16.
  6.             "WHERE id = "+id_actualizar;

y por otro lado estás haciendo 5 sets

Código Java:
Ver original
  1. pst.setString(1, Id);
  2. pst.setString(2, nom);
  3. pst.setString(3, prov);
  4. pst.setString(4, pre);
  5. pst.setString(5, cant);

basta con que quites el pst.setString(1,Id); y decrementes los otros sets en uno para que apunten correctamente, saludos!
  #3 (permalink)  
Antiguo 01/06/2012, 14:13
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Actualizar/UPDATE base de datos desde java

Ya lo habia cambiado, he probado de muchas formas: lo acabo de cambiar y quedo asi:

Código java:
Ver original
  1. sSQL = "UPDATE producto " +
  2.                     "SET nombre = ?," +
  3.                     "proveedor = ?," +
  4.                     "precio = ?," +
  5.                    "cantidad = ?," +
  6.                     "WHERE id = "+id_actualizar;
  7.       String  mensaje = "Los datos se han Modoficado de Manera Satisfactoria...";
  8.      
  9.       try
  10.         {
  11.             PreparedStatement pst = cn.prepareStatement(sSQL);// con esta sentencia se insertan los datos en la base de datos
  12. //            pst.setString(1, Id);
  13.             pst.setString(1, nom);
  14.             pst.setString(2, prov);
  15.             pst.setString(3, pre);
  16.             pst.setString(4, cant);
  17.             int n = pst.executeUpdate();//valida si se guardaron los datos; si pst>0 entonces se guardaron
este codigo me tira el siguiente error:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx ception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 1234' at line 1
  #4 (permalink)  
Antiguo 01/06/2012, 14:18
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 11 años, 11 meses
Puntos: 19
Respuesta: Actualizar/UPDATE base de datos desde java

Creo que tienes que poner comilla simple entre el id que pasas, algo así:

Código Java:
Ver original
  1. "WHERE id = '"+id_actualizar+"'";

o incluirlo como parámetro, pero sería el quinto:

Código Java:
Ver original
  1. "WHERE id = ?";
  2.  
  3. pst.setString(5, id_actualizar);
  #5 (permalink)  
Antiguo 01/06/2012, 19:35
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Actualizar/UPDATE base de datos desde java

ya lo cambie, quedo asi:
Código java:
Ver original
  1. sSQL = "UPDATE producto " +
  2.                     "SET nombre = ?," +
  3.                     "proveedor = ?," +
  4.                     "precio = ?," +
  5.                    "cantidad = ?," +
  6.                     "WHERE id ='"+id_actualizar+"'";

pero me tira el mismo error:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx ception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id ='4312'' at line 1

el id debe estar especificado sino cambia todos los campos de la tabla y solo quiero q se cambien los que tienen el mismo id.

esta es la tabla que estoy utilizando : (aun no esta terminada)

[URL="http://www.subirimagenes.net/show-image.php?id=46ffe9a546051ca01f97e61e08e6f7e7"]Imagen[/URL]

cuando selecciono una fila y pulso el boton modificar los datos se me cargan en los jTextfield de arriba, si modifico un campo y le doy guardar me sale el error mencionado arriba
  #6 (permalink)  
Antiguo 02/06/2012, 10:59
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: Actualizar/UPDATE base de datos desde java

Cita:
Iniciado por yamidvo Ver Mensaje
Ya lo habia cambiado, he probado de muchas formas: lo acabo de cambiar y quedo asi:

Código java:
Ver original
  1. sSQL = "UPDATE producto " +
  2.                     "SET nombre = ?," +
  3.                     "proveedor = ?," +
  4.                     "precio = ?," +
  5.                    "cantidad = ?," +
  6.                     "WHERE id = "+id_actualizar;
  7.       String  mensaje = "Los datos se han Modoficado de Manera Satisfactoria...";
  8.      
  9.       try
  10.         {
  11.             PreparedStatement pst = cn.prepareStatement(sSQL);// con esta sentencia se insertan los datos en la base de datos
  12. //            pst.setString(1, Id);
  13.             pst.setString(1, nom);
  14.             pst.setString(2, prov);
  15.             pst.setString(3, pre);
  16.             pst.setString(4, cant);
  17.             int n = pst.executeUpdate();//valida si se guardaron los datos; si pst>0 entonces se guardaron
este codigo me tira el siguiente error:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx ception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 1234' at line 1
te falta el último parámetro del id

Código Java:
Ver original
  1. pst.setString(5,String.valueOf(id));
__________________
"Por medio de la perseverancia el caracol llegó al arca."
CHARLES SPURGEON
  #7 (permalink)  
Antiguo 02/06/2012, 11:54
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Actualizar/UPDATE base de datos desde java

Prueba a quitar la coma detrás de "cantidad = ?,"

Última edición por jalzur; 02/06/2012 a las 11:56 Razón: mal resaltado
  #8 (permalink)  
Antiguo 04/06/2012, 07:24
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
Respuesta: Actualizar/UPDATE base de datos desde java

es la coma que esta al final de cantidad que no debe ir
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #9 (permalink)  
Antiguo 04/06/2012, 08:59
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Actualizar/UPDATE base de datos desde java

Cita:
Iniciado por rodno Ver Mensaje
es la coma que esta al final de cantidad que no debe ir
jajajaja gracias

Etiquetas: clase, mysql, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:50.