Junior
Jaký je rozdíl mezi metodami execute, executeQuery a executeUpdate?
sobes.tech AI
Odpověď od AI
executeQuery(): Používá se k provádění SQL operátorů, které vracejí jedinou sadu výsledků (například operátorySELECT). Vrací objektResultSet.executeUpdate(): Používá se k provádění SQL operátorů, které mění databázi a vracejí počet aktualizovaných řádků (napříkladINSERT,UPDATE,DELETE,CREATE TABLE,DROP TABLE). Vracíint.execute(): Univerzálnější metoda. Může provádět jakýkoli typ SQL operátoru. Vracíboolean, který ukazuje, zda byl vrácenResultSet. Pokudtrue, je výsledekResultSet. Pokudfalse, je výsledek počet aktualizovaných řádků. Pro získání skutečného výsledku je třeba použítgetResultSet()nebogetUpdateCount().
| Metoda | Účel | Vrácená hodnota | Příklad použití |
|---|---|---|---|
executeQuery |
Spuštění SELECT |
ResultSet |
Získání dat z tabulky. |
executeUpdate |
Spuštění INSERT, UPDATE, DELETE, DDL |
int (počet změněných řádků) |
Přidání, změna nebo odstranění záznamů; vytvoření nebo odstranění tabulek. |
execute |
Jakýkoli SQL operátor | boolean (true, pokud byl vrácen ResultSet) |
Pokud typ operátoru není předem znám nebo operátor může vracet data i počet. |
Příklad použití execute():
// Předpokládá se, že statement již byl vytvořen
boolean isResultSet = statement.execute("SELECT * FROM users WHERE id = 1 OR INSERT INTO logs (message) VALUES ('User fetched')");
if (isResultSet) {
// Zpracování ResultSet
try (ResultSet rs = statement.getResultSet()) {
while (rs.next()) {
// Čtení dat
}
}
} else {
// Zpracování počtu aktualizovaných řádků
int updateCount = statement.getUpdateCount();
// Zpracování updateCount
}