¿Como ejecutar 2 querys al mismo tiempo?

Hola foro,
mi pregunta es q quiero hacer 2 consultas que se ejecuten al mismo tiempo, por ejemplo cuando uno hace:

 

ahi solo se ejecuta esa consulta, pero como lo hara para ejecutar 2 consultas al mismo tiempo en el ciclo while??
se supne q tengo q tener 2 ResultSet o sea 2 variables "rs" una por cada consulta, pero no me funciona en el ciclo

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Quizá sea mejor que hicieras

Quizá sea mejor que hicieras un join en tu query en vez de quererlo hacer en el código.

Pero si insistes, debería

Pero si insistes, debería funcionar algo como:

 

Pero una vez más, así estas casi garantizando que tengas problemas de recursos ( ya sea conexiones, red, o performance ) en tu app

Pero supongo que te darás cuenta de eso muy rápidamente.

Imagen de ezamudio

conexiones

Si mal no recuerdo, una conexión solamente puede tener un ResultSet abierto, de modo que si quieres dos consultas simultáneas o anidadas, necesitas dos conexiones...

Imagen de bimboso_d

Posibilidad

Pues yo tengo una aplicacion con una sola conexion y varios resulset. aunque a lo mejor no sea lo mas correcto pero te dejo mi idea.

 

Aclarando, no tiene nada que ver el contenido del objlCallStm ni el recorrido del resulset, incluso el catch no tiene que ser Exception, puede ser SQLException o algo asi para reducir el catch, pero solo es la idea lo que te quiero comentar, el hecho de que en el for, los objetos los apunto a null para perder toda referencia a su contenido y no se te repita el resulset, pues si no lo haces asi, te ejecuta "i" veces el query y te regresa la misma cantidad de resulset repetidos, claro que cuando insertas en una base de datos, pues esto ya es erroneo.
Saludos

Imagen de ezamudio

no son simultáneos

bimboso_d, tu ejemplo no tiene queries anidados ni concurrentes. Una misma conexión por supuesto que puede atender varios queries, pero uno tras otro. Tu ciclo podría tener miles de iteraciones y va a funcionar bien, porque es un solo query a la vez. Aquí lo que discutíamos era hacer queries anidados, o concurrentes: tener un ResultSet abierto y que uses la misma conexión para ejecutar otro query sin cerrar ese primer ResultSet, para obtener un segundo ResultSet...

Imagen de bimboso_d

Hooo

Jajaja ha pues entonces no entendi jajaja de todas formas saludos.

creo que lo que dice OscarRyz

creo que lo que dice OscarRyz debiese funcionar
mi unica anotacion es q dentro del primer while debiese declararse la nueva variable de conexion y obtener ahi la nueva conexion y el nuevo Resultset,
completando el fragmento de codigo de Oscar quedaria algo asi:

 

@jbrothermx

Y segurito te va a dar problemas de performance

Lo que yo hago cuando mis poderes de SQL no dan para más ( que es casi siempre ) y no puedo hacer el join con el outer join con el inner outer left -right shla la la , sha la la query. Y sé el que el número de registros que mi consulta trae: Es:

1.- Hacer un select con alguna especia de paginación ( ej, where id > 200 and id < 400 )
2.- Iterar todo el resultset y meter el id en una lista
3.- Cerrar ese recurso ( usando un pool es muchisiimo mejor )
4.- Hacer fuera del for, otro query, ahora poniendo mi join usando las listas tipo:   llenado con los ids anteriores
5.- Obtener los nuevos datos.

Es decir algo como:

 

Pero siempre es mejor hacer un buen query con joins bien hechos que un DBA pueda optimizar, que hacer esto que menciono. Esto debe de tomarse como una mala práctica y usarse como último recurso.

Imagen de ezamudio

Performance

Ese último código de jbrothermx crea una conexión por cada registro del ResultSet externo. Eso es costosísimo. Si bien es cierto que se necesitan conexiones separadas, no se necesita una conexión nueva cada vez; se puede reutilizar la misma conexión.

Fuera de los ciclos, se puede crear la segunda conexión (cuando se crea la primera por ejemplo). Dentro del ciclo que itera sobre el ResultSet externo, se ejecuta el query interno que obtiene un ResultSet usando la segunda conexión, pero siempre es la misma conexión. Solamente hay que cerrar el ResultSet interno al terminar el ciclo interno.

Pero como dice Oscar, la mejor optimización sería un JOIN para hacer un solo ciclo de lectura. Dejen al RDBMS hacer lo que mejor sabe hacer.

Imagen de Andres villamayor

En todos los ejemplo que

En todos los ejemplo que estoy mirando y que estan buenisimo, pero ninguno comita? o solo dejan a Jdbc para el comit automatico.

Imagen de seba23571

objeto conexión otra forma diferente

que tal esta duda el mismo objeto conexion que se use para diferentes Statement ej.

st1 = objConexion.createStatement();
st2= objConexion.createStatement();
a mi me no me ha presentado ningún problema hasta ahora lo tengo corriendo en un local de ventas este soft y no me ha presentado error hasta ahora .

esto si el st1 osea el Statement se usa para un Resultset en especial que no esta anidado.
y el st2 se usa para un updatequery() fuera de while podria traer alguna consecuencia hacer estas cosas ?

saludos gracias por ...tus respuesta de otras personas..