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

URGENTE !!!! Error al ejecutar varios executeUpdates

Estas en el tema de URGENTE !!!! Error al ejecutar varios executeUpdates en el foro de Java en Foros del Web. Hola !!! Les comento, tengo el siguiente código para realizar unos insert en una tabla de una BD que tengo creada. Las demás consultas y ...
  #1 (permalink)  
Antiguo 02/04/2009, 13:25
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
URGENTE !!!! Error al ejecutar varios executeUpdates

Hola !!!

Les comento, tengo el siguiente código para realizar unos insert en una tabla de una BD que tengo creada. Las demás consultas y updates que hago en otros métodos me funcionan a la perfección pero en éste método en cuestión en que debo de hacer un número variable de INSERT lo hace a medias y me trae de cabeza.

Les pongo el código y lo que hace:

(suponiendo ya la conexión hecha y el sta = conn.createStatement();)

----------------------------------------------------------------------------------------------
rs = sta.executeQuery("SELECT MAX(Codp) FROM PREGUNTA"); //se corresponde con la de la �ltima pregunta insertada
System.out.println("Maxima Columna ->"+rs.getInt(1)); //para BORRAR !!!!

for (int i=0; i<p.getTemas().size(); i++){
System.out.println("Tema->"+p.getTemas().elementAt(i));

//traza de la sentencia SQL
System.out.println("INSERT INTO PREG_TEMA VALUES ("+ Integer.toString(rs.getInt(1))+","+ p.getTemas().elementAt(i) +");");

sta.executeUpdate("INSERT INTO PREG_TEMA VALUES ("+ Integer.toString(rs.getInt(1))+","+ p.getTemas().elementAt(i) +");");
}
rs.close();

----------------------------------------------------------------------------------------------

(*) Lo que me pinta por consola ( a modo de traza) es lo siguiente:

Maxima Columna ->9
Tema->1
INSERT INTO PREG_TEMA VALUES (9,1);
Tema->2

(*) Lo único que hace es añadir solo la siguiente instancia a la tabla en la BD (comprobado con SQLiteManager):
(9,1)

Pero la instancia de la tabla (9,2) nada de nada y lo que más me mosquea es que no devuelve erroe ni nada al ejecutarlo

Muchas gracias por adelantado !!!
  #2 (permalink)  
Antiguo 02/04/2009, 13:53
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

Hola

mmmm, ni siquiera pinta el segundo insert por consola??
  #3 (permalink)  
Antiguo 02/04/2009, 13:56
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

esas instrucciones las tienes dentro de un bloque try catch??
  #4 (permalink)  
Antiguo 02/04/2009, 14:03
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

Les escribo el código del método entero y así lo pueden ver mejor (fallo anterior mio):

Código .:

boolean anadirPregunta(Pregunta p){
boolean correct = false;
ResultSet rs;

try {
//conn.setAutoCommit(false); //inhabilitamos el compromiso automático
sta = conn.createStatement();

//insertamos datos en la tabla pregunta
sta.executeUpdate("INSERT INTO PREGUNTA VALUES (NULL,\"" +p.getEnunciado()+"\",\""+p.getRespuestas().elemen tAt(0)+
"\",\""+p.getRespuestas().elementAt(1)+"\",\""+p.g etRespuestas().elementAt(2)+"\",\""+p.getRespuesta s().elementAt(3)+
"\",\""+p.getRespuestas().elementAt(4)+"\",\""+p.g etRespuestas().elementAt(5)+"\","+Integer.toString (p.getCorrecta())+
",\""+p.getRutaImagen()+"\")");

//para mantener consistencia de la BD actualizamos tambi�n datos en la tabla Preg_Tema
rs = sta.executeQuery("SELECT MAX(Codp) FROM PREGUNTA"); //se corresponde con la de la �ltima pregunta insertada
System.out.println("Maxima Columna ->"+rs.getInt(1)); //para BORRAR !!!!


for (int i=0; i<p.getTemas().size(); i++){
System.out.println("Tema->"+p.getTemas().elementAt(i));

//traza de la sentencia SQL
System.out.println("INSERT INTO PREG_TEMA " + "VALUES ("+ Integer.toString(rs.getInt(1))+","+ p.getTemas().elementAt(i) +")");

sta.executeUpdate("INSERT INTO PREG_TEMA " + "VALUES ("+ Integer.toString(rs.getInt(1))+","+ p.getTemas().elementAt(i) +")");
}
rs.close();
}
catch (SQLException e) {
return(correct);
}

return(true);
}

Muchas gracias por tu interes Drac94 !!!
  #5 (permalink)  
Antiguo 02/04/2009, 14:09
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

ACLARANDOLO MÁS !!!

Desde el programa de pueba estoy diciendole que añada una pregunta que pertenece a los temas 1 y 2. Y el muy (piiiiiiiiiiii) pinta esto por consola en la traza de este método (es como si el código tubiera un Poltergeist):

SALIDA POR CONSOLA .:
Maxima Columna ->11
Tema->1
INSERT INTO PREG_TEMA VALUES (11,1)
Tema->2

Los resultados testeados desde el SQLiteManager son los siguientes;
- Añade la pregunta nueva
- Realizar solo el primer "insert" sobre la tabla preg_tema.
  #6 (permalink)  
Antiguo 02/04/2009, 15:19
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

cual es la llave primaria de la tabla preg_tema??
  #7 (permalink)  
Antiguo 02/04/2009, 15:35
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

La clave primaria de la tabla Preg_Tema esta compuesta por (Codp, Codt) ,es decir, el código de pregunta y el código de tema y nada más esa tabla no guarda más información. De echo haciendo los "insert" directamente en SQLiteManager los hace sin problemas
  #8 (permalink)  
Antiguo 03/04/2009, 03:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

Un Statement solo puede tener una sentencia abierta a la vez, y tu estas ejecutando varios executeUpdate mientras tienes abierto el executeQuery.

Utiliza diferentes Statement y no deberías tener problemas. Por otro lado, puesto que siempre es el mismo Statement y solo cambian los parametros, para los updates quiza te convendria mas usar un PreparedStatement.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Última edición por GreenEyed; 03/04/2009 a las 07:13
  #9 (permalink)  
Antiguo 03/04/2009, 13:10
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: URGENTE !!!! Error al ejecutar varios executeUpdates

Al final he conseguido arreglarlo con lo que me comentas y deshabilitando/habilitando el "AutoCommit"; me dí cuenta anoche madrugada.

Muchas gracias
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 09:58.