Junior
73
questionbank

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

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Методы execute, executeQuery и executeUpdate используются для выполнения SQL-запросов через JDBC, но предназначены для разных типов запросов и возвращают разные результаты.

  1. executeQuery(String sql):

    • Предназначен для выполнения SQL-запросов типа SELECT.
    • Возвращает объект ResultSet, содержащий результаты запроса.
    • Выбрасывает исключение SQLException, если запрос не является SELECT.
    java
  2. executeUpdate(String sql):

    • Предназначен для выполнения SQL-запросов типа INSERT, UPDATE или DELETE.
    • Также может использоваться для выполнения DDL-команд (например, CREATE TABLE, ALTER TABLE).
    • Возвращает целое число (int), представляющее количество затронутых строк (для INSERT, UPDATE, DELETE) или 0 (для DDL-команд).
    • Выбрасывает исключение SQLException, если запрос возвращает ResultSet.
    java
  3. execute(String sql):

    • Универсальный метод для выполнения любого типа SQL-запроса.
    • Возвращает boolean: true, если результат является ResultSet (для SELECT), и false, если результат является количеством затронутых строк или не возвращает ничего (для INSERT, UPDATE, DELETE, DDL).
    • Для получения actual результата после execute:
      • Если execute вернул true, использовать getResultSet() для получения ResultSet.
      • Если execute вернул false, использовать getUpdateCount() для получения количества затронутых строк.
    java

В таблице ниже приведены основные различия:

МетодТип SQL-запросаВозвращаемое значениеПримеры запросов
executeQuerySELECTResultSetSELECT * FROM users
executeUpdateINSERT, UPDATE, DELETE, DDLint (количество затронутых строк или 0)INSERT INTO, UPDATE users, DROP TABLE
executeЛюбойboolean (true, если ResultSet; false иначе)Любой

Как правило, рекомендуется использовать более специфичные методы (executeQuery, executeUpdate), когда тип запроса заранее известен, так как это повышает ясность кода и позволяет компилятору или IDE произвести более точные проверки. Метод execute используется в случаях, когда тип запроса может быть динамическим или неизвестен заранее.