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();