Sobes.tech
Junior

¿Cuál es la diferencia entre los métodos execute, executeQuery y executeUpdate?

sobes.tech AI

Respuesta de la IA

  • executeQuery(): Se utiliza para ejecutar operadores SQL que devuelven un conjunto de resultados único (por ejemplo, operadores SELECT). Devuelve un objeto ResultSet.
  • executeUpdate(): Se utiliza para ejecutar operadores SQL que modifican la base de datos y devuelven el número de filas actualizadas (por ejemplo, INSERT, UPDATE, DELETE, CREATE TABLE, DROP TABLE). Devuelve un int.
  • execute(): Método más versátil. Puede ejecutar cualquier tipo de operador SQL. Devuelve un boolean que indica si se devolvió un ResultSet. Si es true, el resultado es un ResultSet. Si es false, el resultado es el número de filas actualizadas. Para obtener el resultado real, es necesario usar getResultSet() o getUpdateCount().
Método Propósito Valor devuelto Ejemplo de uso
executeQuery Ejecución de SELECT ResultSet Obtener datos de una tabla.
executeUpdate Ejecución de INSERT, UPDATE, DELETE, DDL int (número de filas modificadas) Añadir, modificar o eliminar registros; crear o eliminar tablas.
execute Cualquier operador SQL boolean (true si se devolvió ResultSet) Cuando el tipo de operador no se conoce de antemano o el operador puede devolver datos y conteo.

Ejemplo de uso de execute():

// Se asume que la declaración ya está creada
boolean isResultSet = statement.execute("SELECT * FROM users WHERE id = 1 OR INSERT INTO logs (message) VALUES ('User fetched')");

if (isResultSet) {
    // Procesar ResultSet
    try (ResultSet rs = statement.getResultSet()) {
        while (rs.next()) {
            // Leer datos
        }
    }
} else {
    // Procesar el número de filas actualizadas
    int updateCount = statement.getUpdateCount();
    // Procesar updateCount
}