Junior
Каква е разликата между методите execute, executeQuery и executeUpdate?
sobes.tech AI
Отговор от AI
executeQuery(): Използва се за изпълнение на SQL оператори, които връщат единствен набор от резултати (например операториSELECT). Връща обектResultSet.executeUpdate(): Използва се за изпълнение на SQL оператори, които променят базата данни и връщат броя на актуализираните редове (напримерINSERT,UPDATE,DELETE,CREATE TABLE,DROP TABLE). Връщаint.execute(): По-универсален метод. Може да изпълнява всеки тип SQL оператор. Връщаboolean, който показва дали е върнатResultSet. Акоtrue, резултатът еResultSet. Акоfalse, резултатът е броят на актуализираните редове. За получаване на реалния резултат трябва да се използватgetResultSet()илиgetUpdateCount().
| Метод | Назначение | Връщана стойност | Пример за използване |
|---|---|---|---|
executeQuery |
Изпълнение на SELECT |
ResultSet |
Получаване на данни от таблица. |
executeUpdate |
Изпълнение на INSERT, UPDATE, DELETE, DDL |
int (брой на променените редове) |
Добавяне, промяна или изтриване на записи; създаване или изтриване на таблици. |
execute |
Всеки SQL оператор | boolean (ако е върнат ResultSet, true) |
Когато типът на оператора не е предварително известен или операторът може да върне както данни, така и броя. |
Пример за използване на execute():
// Предполага се, че statement вече е създаден
boolean isResultSet = statement.execute("SELECT * FROM users WHERE id = 1 OR INSERT INTO logs (message) VALUES ('User fetched')");
if (isResultSet) {
// Обработка на ResultSet
try (ResultSet rs = statement.getResultSet()) {
while (rs.next()) {
// Четене на данни
}
}
} else {
// Обработка на броя на актуализираните редове
int updateCount = statement.getUpdateCount();
// Обработка на updateCount
}