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

String con cadena SQL para insertar en 2 tablas ¿por que no anda?

Estas en el tema de String con cadena SQL para insertar en 2 tablas ¿por que no anda? en el foro de Java en Foros del Web. Hola a todos, les comento lo que me ocurre. La idea es guardar datos en en 2 tablas d¡ferentes (tabla1 y tabla2). He probado lo ...
  #1 (permalink)  
Antiguo 16/04/2012, 11:54
 
Fecha de Ingreso: diciembre-2009
Mensajes: 115
Antigüedad: 14 años, 5 meses
Puntos: 0
String con cadena SQL para insertar en 2 tablas ¿por que no anda?

Hola a todos, les comento lo que me ocurre. La idea es guardar datos en en 2 tablas d¡ferentes (tabla1 y tabla2). He probado lo siguiente:
String cadena =
"INSERT INTO tabla1 (id, nombre) VALUES (NULL, 'Sergio')
INSERT INTO tabla2 (id, pedido) VALUES (NULL, 'quiere una PC nueva')"
;
Obviamente esto es un ejemplo casi ridiculo, pero quiero mostrar que uso un String compuesto por dos INSERT.
Probe esto directamente (no este SQL) en MySQL y funcion, me agrega en las dos tabla, sin embargo al ejecutarlo desde JAVA no funciona.

Código:
conectar = new conexion();
Statement st = conectar.conectar();
st.executeUpdate(cadenaSQL);
st.close();
Acaso executeUpdate no funciona con SQLs compuestos?
Saludos, espero puedan darme una mano.
  #2 (permalink)  
Antiguo 16/04/2012, 14:54
 
Fecha de Ingreso: abril-2012
Mensajes: 6
Antigüedad: 12 años
Puntos: 1
Respuesta: String con cadena SQL para insertar en 2 tablas ¿por que no anda?

Hola, creo que lo más fácil es que lo ejecutes en dos sentencias. Nunca habría intentado hacerlo con una sola sentencia, pero vaya... nunca lo he intentado, puede que me equivoque. No obstante, yo lo haría así:

Código:
String cadenaSQL = "INSERT INTO tabla1 (id, nombre) VALUES (NULL, 'Sergio')";
st.executeUpdate(cadenaSQL);
cadena = "INSERT INTO tabla2 (id, pedido) VALUES (NULL, 'quiere una PC nueva')";
st.executeUpdate(cadenaSQL);
De todas formas, otra cosa que veo en el código que pegas es que por un lado al String lo llamas cadena y luego utilizas el String cadenaSQL, aunque no sé si hay parte del código que no has puesto.

Y lo del valor NULL no lo entiendo muy bien. Si lo pones porque tiene un sequence/autoincrement en el id, al menos en las bases de datos que he trabajado yo, no hace falta ponerlo...

INSERT INTO tabla2 (pedido) VALUES ('quiere una PC nueva'); Si tiene un id autoincrement, se asigna el siguiente id al registro.
  #3 (permalink)  
Antiguo 16/04/2012, 16:38
 
Fecha de Ingreso: diciembre-2009
Mensajes: 115
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: String con cadena SQL para insertar en 2 tablas ¿por que no anda?

Cita:
Iniciado por Jatuey Ver Mensaje
Hola, creo que lo más fácil es que lo ejecutes en dos sentencias. Nunca habría intentado hacerlo con una sola sentencia, pero vaya... nunca lo he intentado, puede que me equivoque. No obstante, yo lo haría así:

Código:
String cadenaSQL = "INSERT INTO tabla1 (id, nombre) VALUES (NULL, 'Sergio')";
st.executeUpdate(cadenaSQL);
cadena = "INSERT INTO tabla2 (id, pedido) VALUES (NULL, 'quiere una PC nueva')";
st.executeUpdate(cadenaSQL);
De todas formas, otra cosa que veo en el código que pegas es que por un lado al String lo llamas cadena y luego utilizas el String cadenaSQL, aunque no sé si hay parte del código que no has puesto.

Y lo del valor NULL no lo entiendo muy bien. Si lo pones porque tiene un sequence/autoincrement en el id, al menos en las bases de datos que he trabajado yo, no hace falta ponerlo...

INSERT INTO tabla2 (pedido) VALUES ('quiere una PC nueva'); Si tiene un id autoincrement, se asigna el siguiente id al registro.
Gracias, lo he hecho en 2 consultas y anda. Hasta que encuentre como hacerlo todo en un solo String lo dejare asi
Coloque cadenaSQl porque me traicionó el subconsciente, en la consulta original el String se llama cadenaSQL.
En cuanto a lo del NULL como auto-increment, lo uso asi porque asi lo aprendi, y es difícil despegarse de los hábitos, pero intentare usarlo de la forma que me lo planteas.
Muchas gracias!!!!
  #4 (permalink)  
Antiguo 17/04/2012, 02:27
 
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 28
Antigüedad: 12 años
Puntos: 3
Respuesta: String con cadena SQL para insertar en 2 tablas ¿por que no anda?

Hasta donde yo se, no creo que se pueda.

¿qué funciona en mysql? Si, pero porque lo ejecutas en su consola, y puedes poner varias sentencias seguidas.

Pero al hacerlo desde java, estas enviando una consulta y esperando una respuesta, no dos respuestas. Un insert devuelve un entero para comprobar si funcionó.

La única forma que se me ocurre es, como haces en la consola, ejecutar como si fuera un script. Te creas un script con todas las queries que quieras ejecutar y lo lanzas desde java.

Etiquetas: mysql, sql, string, tablas, cadenas
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 22:17.