Sobes.tech
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
}