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

Error al hacer un update en BBDD Oracle

Estas en el tema de Error al hacer un update en BBDD Oracle en el foro de Java en Foros del Web. Os dejo el codigo haber si me podeis echar una mano, @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original public void modificarEntidad ( Connection conexion, ParcialesCobrados entidad ...
  #1 (permalink)  
Antiguo 11/07/2013, 04:01
 
Fecha de Ingreso: julio-2013
Mensajes: 1
Antigüedad: 10 años, 9 meses
Puntos: 0
Error al hacer un update en BBDD Oracle

Os dejo el codigo haber si me podeis echar una mano,
Código Java:
Ver original
  1. public void modificarEntidad(Connection conexion, ParcialesCobrados entidad)throws SQLException, java.text.ParseException {
  2.        
  3.         String sql = "UPDATE ParcialesCobrados SET EMPRESA = ?, " +
  4.                 " CENTRO = ?, FECHA = ? WHERE HORA = ? AND  FICHERO = ? AND ESTADO = '?'";
  5.    
  6.    
  7.     try{
  8.        
  9.         PreparedStatement statement = conexion.prepareStatement(sql);
  10.        
  11.        
  12.         try{
  13.                
  14.         statement.setString(1, "004");
  15.         statement.setString(2, entidad.getClave().getCentro());    
  16.         Date fecha = null;
  17.                 SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");                
  18.                 fecha = formateador.parse(entidad.getClave().getFecha());
  19.                 java.sql.Date sqlDate = new java.sql.Date(fecha.getTime());
  20.             statement.setDate(3,sqlDate);      
  21.         Date hora = null;
  22.         SimpleDateFormat formateador2 = new SimpleDateFormat("hh:mm:ss");
  23.         hora = formateador2.parse(entidad.getHora());
  24.         java.sql.Time sqlTime = new java.sql.Time(hora.getTime());
  25.         statement.setTime(4,sqlTime);      
  26.         statement.setString(5, entidad.getEstado());   
  27.         statement.setString(6, entidad.getFicheroExt());
  28.                                    
  29.             statement.executeUpdate();
  30.             statement.close();
  31.            
  32.         }
  33.             catch (ParseException e) {
  34.             e.printStackTrace();
  35.         }
  36.     }
  37.    
  38.     catch (SQLException e) {
  39.         System.out.println("Error al realizar UPDATE sobre la tabla ParcialesCobrados");
  40.         e.printStackTrace();
  41.         throw new SQLException();
  42.     }  
  43.            
  44.        
  45.     }
  46.    
  47.    
  48.    
  49.     public static void main( String args[]) throws SQLException, java.text.ParseException{
  50.        
  51.       ParcialesCobrados pc = new ParcialesCobrados("16:30:00", "", "1");
  52.    
  53.       ParcialesCobradosPK pcpk = new ParcialesCobradosPK("001", "0099", "08/11/2013");
  54.      
  55.       pc.setClave(pcpk);
  56.      
  57.      
  58.    
  59.     GestorParcialesCobrados.obtenerInstancia().modificarEntidad(GestorAccesoJDBC.obtenerInstancia().getConexion(),pc);

Cita:
Error al realizar UPDATE sobre la tabla ParcialesCobrados
java.sql.SQLException: Índice de columna no válido
at oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:208)
at oracle.jdbc.driver.OraclePreparedStatement.setStri ngInternal(OraclePreparedStatement.java:5404)
at oracle.jdbc.driver.OraclePreparedStatement.setStri ng(OraclePreparedStatement.java:5396)
at eci.gestionCartaCompra.sistema.GestorParcialesCobr ados.modificarEntidad(GestorParcialesCobrados.java :250)
at eci.gestionCartaCompra.sistema.GestorParcialesCobr ados.main(GestorParcialesCobrados.java:833)
Exception in thread "main" java.sql.SQLException
at eci.gestionCartaCompra.sistema.GestorParcialesCobr ados.modificarEntidad(GestorParcialesCobrados.java :264)
at eci.gestionCartaCompra.sistema.GestorParcialesCobr ados.main(GestorParcialesCobrados.java:833)


La cuestion es que quiero hacer un update, y me indica qe el indice de la columna no es valido, y estoy seguro que si porque el insert lo hace igual con lo de los indices y no me da problema,


Gracias de antemano

Última edición por gnzsoloyo; 11/07/2013 a las 07:57 Razón: Te faltaba etiquetar...
  #2 (permalink)  
Antiguo 11/07/2013, 07:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error al hacer un update en BBDD Oracle

OFF-TOPIC.
No hay problemas con el SQL, sino con el Java.

Movido de Oracle a Foro de Java.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/07/2013, 08:51
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Error al hacer un update en BBDD Oracle

La verdad es que el error si esta en tu query.

Cambia esto
Código Java:
Ver original
  1. String sql = "UPDATE ParcialesCobrados SET EMPRESA = ?, " +
  2.                 " CENTRO = ?, FECHA = ? WHERE HORA = ? AND  FICHERO = ? AND ESTADO = '?'";

Por esto otro
Código Java:
Ver original
  1. String sql = "UPDATE ParcialesCobrados SET EMPRESA = ?, " +
  2.                 " CENTRO = ?, FECHA = ? WHERE HORA = ? AND  FICHERO = ? AND ESTADO = ?";

Y esto
Código Java:
Ver original
  1. statement.setString(5, entidad.getEstado());    
  2. statement.setString(6, entidad.getFicheroExt());

Código Java:
Ver original
  1. statement.setString(5, entidad.getFicheroExt());
  2. statement.setString(6, entidad.getEstado());
  #4 (permalink)  
Antiguo 11/07/2013, 13:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error al hacer un update en BBDD Oracle

Interesting...
En definitiva era un tema de integración entre Java y Oracle.
En realidad, sigo sosteniendo que no estaba tanto en la consulta, porque sintacticamente era correcta, aunque estaba mal escrita para el uso que se le iba a dar en Java.
Es decir, la excepción era producto de un error de escritura de la consulta, pero la consulta en si no contenía errores de SQL, sino de parametrización para Java. Y eso no se ve a simple vista en el SQL.
En otro contexto, si los parámetros hubiesen estado bien, el update no hubiese funcionado o hubiese funcionado mal porque los parámetros estaban en el orden incorrecto.
Incluso es posible que te hubiese devuelto un error de "invalid number", y no sabrías por qué...

Hay que tener mucho cuidado cuando trabajas en forma conjunta entre lenguajes que no son la misma cosa, que no pertenecen al mismo entorno.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bbdd, oracle, sql, tabla, update
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 21:20.