Junior
Aký je rozdiel medzi metódami execute, executeQuery a executeUpdate?
sobes.tech AI
Odpoveď od AI
executeQuery(): Používa sa na vykonávanie SQL príkazov, ktoré vracajú jedinú množinu výsledkov (napríkladSELECT). Vráti objektResultSet.executeUpdate(): Používa sa na vykonávanie SQL príkazov, ktoré menia databázu a vracajú počet upravených riadkov (napríkladINSERT,UPDATE,DELETE,CREATE TABLE,DROP TABLE). Vrátiint.execute(): Viacúčelová metóda. Môže vykonávať akýkoľvek typ SQL príkazu. Vrátiboolean, ktorý ukazuje, či bol vrátenýResultSet. Aktrue, výsledok jeResultSet. Akfalse, výsledok je počet upravených riadkov. Na získanie aktuálneho výsledku je potrebné použiťgetResultSet()alebogetUpdateCount().
| Metóda | Účel | Vrátená hodnota | Príklad použitia |
|---|---|---|---|
executeQuery |
Spustenie SELECT |
ResultSet |
Získanie údajov z tabuľky. |
executeUpdate |
Spustenie INSERT, UPDATE, DELETE, DDL |
int (počet upravených riadkov) |
Pridanie, úprava alebo odstránenie záznamov; vytvorenie alebo odstránenie tabuliek. |
execute |
Akýkoľvek SQL príkaz | boolean (true, ak bol vrátený ResultSet) |
Keď typ príkazu nie je vopred známy alebo príkaz môže vrátiť dáta aj count. |
Príklad použitia execute():
// Predpokladá sa, že statement je už vytvorený
boolean isResultSet = statement.execute("SELECT * FROM users WHERE id = 1 OR INSERT INTO logs (message) VALUES ('User fetched')");
if (isResultSet) {
// Spracovanie ResultSet
try (ResultSet rs = statement.getResultSet()) {
while (rs.next()) {
// Čítanie údajov
}
}
} else {
// Spracovanie počtu upravených riadkov
int updateCount = statement.getUpdateCount();
// Spracovanie updateCount
}