Junior
Aký je rozdiel medzi metódami execute, executeQuery a executeUpdate?
sobes.tech AI
Odpoveď od AI
executeQuery sa používa na vykonávanie SELECT dopytov, vracia objekt ResultSet s výsledkami.
executeUpdate sa používa na vykonávanie DML príkazov (INSERT, UPDATE, DELETE) alebo DDL (CREATE, ALTER, DROP). Vracia počet riadkov ovplyvnených operáciou.
execute môže vykonávať akýkoľvek typ SQL príkazu. Vracia boolean: true, ak je výsledkom ResultSet, a false v opačnom prípade (ak ide o počet aktualizovaných riadkov alebo žiadny výsledok). Na získanie ResultSet sa používa metóda getResultSet(), na získanie počtu aktualizovaných riadkov — getUpdateCount().
| Metóda | Účel | Vrátený typ | Príklady SQL príkazov |
|---|---|---|---|
executeQuery |
SELECT | ResultSet |
SELECT * FROM users |
executeUpdate |
INSERT, UPDATE, DELETE, DDL | int (ovplyvnené riadky) |
INSERT INTO users ..., UPDATE users ..., DROP TABLE users |
execute |
Akýkoľvek typ | boolean |
Akýkoľvek |
Príklad použitia executeQuery:
// Získanie spojenia
Connection conn = ...;
Statement stmt = conn.createStatement();
// Vykonanie 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 + ", Meno: " + name);
}
rs.close();
stmt.close();
conn.close();
Príklad použitia executeUpdate:
// Získanie spojenia
Connection conn = ...;
Statement stmt = conn.createStatement();
// Vykonanie INSERT
int updatedRows = stmt.executeUpdate("INSERT INTO users (name) VALUES ('John Doe')");
System.out.println("Počet vložených riadkov: " + updatedRows);
stmt.close();
conn.close();
Príklad použitia execute:
// Získanie spojenia
Connection conn = ...;
Statement stmt = conn.createStatement();
// Vykonanie DDL
boolean isResultSet = stmt.execute("CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR(255))");
if (!isResultSet) {
System.out.println("Vytvorená alebo aktualizovaná tabuľka, počet: " + stmt.getUpdateCount());
}
stmt.close();
conn.close();