Назад к вопросам
Junior
74
questionbank

В чем разница между методами execute, executeQuery и executeUpdate?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

  • executeQuery(): Используется для выполнения SQL-операторов, возвращающих одиночный набор результатов (например, операторы SELECT). Возвращает объект ResultSet.
  • executeUpdate(): Используется для выполнения SQL-операторов, которые изменяют базу данных и возвращают количество обновленных строк (например, INSERT, UPDATE, DELETE, CREATE TABLE, DROP TABLE). Возвращает int.
  • execute(): Более универсальный метод. Может выполнять любой тип SQL-оператора. Возвращает boolean, указывающий, был ли возвращен ResultSet. Если true, результат — ResultSet. Если false, результат — количество обновленных строк. Для получения actual результата необходимо использовать getResultSet() или getUpdateCount().
Метод Назначение Возвращаемое значение Пример использования
executeQuery Выполнение SELECT ResultSet Получение данных из таблицы.
executeUpdate Выполнение INSERT, UPDATE, DELETE, DDL int (количество измененных строк) Добавление, изменение или удаление записей; создание или удаление таблиц.
execute Любой SQL-оператор boolean (true, если возвращен ResultSet) Когда тип оператора неизвестен заранее или оператор может вернуть и данные, и count.

Пример использования 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
}