Sobes.tech
Junior

Qual é a diferença entre os métodos execute, executeQuery e executeUpdate?

sobes.tech IA

Resposta da IA

executeQuery é usado para executar consultas SELECT, retornando um objeto ResultSet com os resultados.

executeUpdate é usado para executar comandos DML (INSERT, UPDATE, DELETE) ou DDL (CREATE, ALTER, DROP). Retorna o número de linhas afetadas pela operação.

execute pode executar qualquer tipo de comando SQL. Retorna um booleano: true se o resultado for um ResultSet, e false caso contrário (se for uma contagem de linhas atualizadas ou sem resultado). Para obter o ResultSet, usa-se o método getResultSet(), e para obter a contagem de linhas atualizadas — getUpdateCount().

Método Propósito Tipo de retorno Exemplos de comandos SQL
executeQuery SELECT ResultSet SELECT * FROM users
executeUpdate INSERT, UPDATE, DELETE, DDL int (linhas afetadas) INSERT INTO users ..., UPDATE users ..., DROP TABLE users
execute Qualquer tipo boolean Qualquer comando SQL

Exemplo de uso de executeQuery:

// Obter conexão
Connection conn = ...;
Statement stmt = conn.createStatement();
// Executar SELECT
ResultSet rs = stmt.executeQuery("SELECT id, name FROM users");
while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("ID: " + id + ", Nome: " + name);
}
rs.close();
stmt.close();
conn.close();

Exemplo de uso de executeUpdate:

// Obter conexão
Connection conn = ...;
Statement stmt = conn.createStatement();
// Executar INSERT
int updatedRows = stmt.executeUpdate("INSERT INTO users (name) VALUES ('John Doe')");
System.out.println("Linhas inseridas: " + updatedRows);
stmt.close();
conn.close();

Exemplo de uso de execute:

// Obter conexão
Connection conn = ...;
Statement stmt = conn.createStatement();
// Executar DDL
boolean isResultSet = stmt.execute("CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR(255))");
if (!isResultSet) {
    System.out.println("Contagem de linhas afetadas ou tabela criada: " + stmt.getUpdateCount());
}
stmt.close();
conn.close();