executeupdate entre diferencia java jdbc resultset

java - diferencia entre executequery y executeupdate



Statement.execute(sql) vs executeUpdate(sql) y executeQuery(sql) (2)

Tengo una pregunta relacionada con este método: st.execute(sql); donde st obviamente es un objeto Statement. Directamente de este tutorial de Oracle Java:

execute: Devuelve true si el primer objeto que devuelve la consulta es un objeto ResultSet. Use este método si la consulta puede devolver uno o más objetos ResultSet. Recupere los objetos ResultSet devueltos de la consulta llamando repetidamente a Statement.getResutSet.

¿Qué se entiende por " uno o más objetos ResultSet "? ¿Cómo es posible administrarlos una vez que obtuvieron una matriz de ResultSet ? Mientras que st.executeQuery(sql) y st.executeUpdate(sql) son muy claros. No es (al menos para mí) el objetivo de st.execute(sql) que también puede devolver un int como si se hubiera actualizado una tabla.

Gracias por adelantado


¿Qué quieren decir con "uno o más objetos ResultSet"?

El javadoc para el método de execute dice esto:

" Ejecuta la instrucción SQL dada, que puede devolver resultados múltiples. En algunas situaciones (poco comunes), una sola instrucción SQL puede devolver múltiples conjuntos de resultados y / o conteos de actualización. Normalmente puede ignorar esto a menos que (1) esté ejecutando un procedimiento almacenado que sabe que puede devolver resultados múltiples o (2) está ejecutando dinámicamente una cadena SQL desconocida " .

Eso básicamente lo explica. A veces, una consulta puede entregar más de un ResultSet .

si es así, ¿cómo es posible gestionarlos una vez que obtuvieron una matriz de ResultSet?

No estoy seguro de lo que quieres decir, pero:

  • no puede obtenerlos como una matriz: debe obtenerlos uno a la vez, y
  • podrías poner los ResultSets en una matriz ...

No es (al menos para mí) el objetivo de st.execute (sql) que también puede devolver un int como si se hubiera actualizado una tabla.

Un uso de execute es ejecutar una declaración SQL si no sabe si se trata de una consulta, una actualización (de algún tipo) ... o alguna otra cosa que potencialmente entregue múltiples conjuntos de resultados. Es una generalización de executeQuery() y executeUpdate() ...


boolean execute (): Ejecuta la instrucción SQL en este objeto Statement preparado, que puede ser cualquier tipo de declaración SQL.

ResultSet executeQuery (): ejecuta la consulta SQL en este objeto Statement preparado y devuelve el objeto ResultSet generado por la consulta.

int executeUpdate (): ejecuta la instrucción SQL en este objeto Statement preparado, que debe ser una instrucción SQL INSERT, UPDATE o DELETE; o una declaración SQL que no devuelve nada, como una instrucción DDL.

El mejor lugar para encontrar respuestas a preguntas como esta es Javadocs: aquí