Методы execute, executeQuery и executeUpdate используются для выполнения SQL-запросов через JDBC, но предназначены для разных типов запросов и возвращают разные результаты.
executeQuery(String sql):
SELECT.ResultSet, содержащий результаты запроса.SQLException, если запрос не является SELECT.java
executeUpdate(String sql):
INSERT, UPDATE или DELETE.CREATE TABLE, ALTER TABLE).int), представляющее количество затронутых строк (для INSERT, UPDATE, DELETE) или 0 (для DDL-команд).SQLException, если запрос возвращает ResultSet.java
execute(String sql):
boolean: true, если результат является ResultSet (для SELECT), и false, если результат является количеством затронутых строк или не возвращает ничего (для INSERT, UPDATE, DELETE, DDL).execute:
execute вернул true, использовать getResultSet() для получения ResultSet.execute вернул false, использовать getUpdateCount() для получения количества затронутых строк.java
В таблице ниже приведены основные различия:
| Метод | Тип SQL-запроса | Возвращаемое значение | Примеры запросов |
|---|---|---|---|
executeQuery | SELECT | ResultSet | SELECT * FROM users |
executeUpdate | INSERT, UPDATE, DELETE, DDL | int (количество затронутых строк или 0) | INSERT INTO, UPDATE users, DROP TABLE |
execute | Любой | boolean (true, если ResultSet; false иначе) | Любой |
Как правило, рекомендуется использовать более специфичные методы (executeQuery, executeUpdate), когда тип запроса заранее известен, так как это повышает ясность кода и позволяет компилятору или IDE произвести более точные проверки. Метод execute используется в случаях, когда тип запроса может быть динамическим или неизвестен заранее.