Junior
Quelle est la différence entre les méthodes execute, executeQuery et executeUpdate ?
sobes.tech IA
Réponse de l'IA
executeQuery est utilisé pour exécuter des requêtes SELECT, renvoyant un objet ResultSet avec les résultats.
executeUpdate est utilisé pour exécuter des commandes DML (INSERT, UPDATE, DELETE) ou DDL (CREATE, ALTER, DROP). Il renvoie le nombre de lignes affectées par l'opération.
execute peut exécuter tout type de commande SQL. Il renvoie un booléen : true si le résultat est un ResultSet, et false sinon (si c'est un nombre de lignes mises à jour ou aucun résultat). Pour obtenir le ResultSet, on utilise la méthode getResultSet(), et pour obtenir le nombre de lignes mises à jour — getUpdateCount().
| Méthode | Objectif | Type de retour | Exemples de commandes SQL |
|---|---|---|---|
executeQuery |
SELECT | ResultSet |
SELECT * FROM users |
executeUpdate |
INSERT, UPDATE, DELETE, DDL | int (lignes affectées) |
INSERT INTO users ..., UPDATE users ..., DROP TABLE users |
execute |
Tout type | boolean |
Tout commande SQL |
Exemple d'utilisation de executeQuery:
// Obtenir la connexion
Connection conn = ...;
Statement stmt = conn.createStatement();
// Exécuter 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 + ", Nom: " + name);
}
rs.close();
stmt.close();
conn.close();
Exemple d'utilisation de executeUpdate:
// Obtenir la connexion
Connection conn = ...;
Statement stmt = conn.createStatement();
// Exécuter INSERT
int updatedRows = stmt.executeUpdate("INSERT INTO users (name) VALUES ('John Doe')");
System.out.println("Lignes insérées : " + updatedRows);
stmt.close();
conn.close();
Exemple d'utilisation de execute:
// Obtenir la connexion
Connection conn = ...;
Statement stmt = conn.createStatement();
// Exécuter DDL
boolean isResultSet = stmt.execute("CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR(255))");
if (!isResultSet) {
System.out.println("Nombre de lignes affectées ou création de table : " + stmt.getUpdateCount());
}
stmt.close();
conn.close();