В чем разница между методами execute, executeQuery и executeUpdate?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
executeQuery используется для выполнения запросов SELECT, возвращает объект ResultSet с результатами.
executeUpdate используется для выполнения команд DML (INSERT, UPDATE, DELETE) или DDL (CREATE, ALTER, DROP). Возвращает количество строк, затронутых операцией.
execute может выполнять любой тип SQL-команды. Возвращает boolean: true, если результат является ResultSet, и false в противном случае (если это количество обновленных строк или отсутствие результата). Для получения ResultSet используется метод getResultSet(), для получения количества обновленных строк — getUpdateCount().
| Метод | Назначение | Возвращаемый тип | Примеры SQL-команд |
|---|---|---|---|
executeQuery |
SELECT | ResultSet |
SELECT * FROM users |
executeUpdate |
INSERT, UPDATE, DELETE, DDL | int (затронутые строки) |
INSERT INTO users ..., UPDATE users ..., DROP TABLE users |
execute |
Любой тип | boolean |
Любые |
Пример использования executeQuery:
// Получение соединения
Connection conn = ...;
Statement stmt = conn.createStatement();
// Выполнение SELECT
ResultSet rs = stmt.executeQuery("SELECT id, name FROM users");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
rs.close();
stmt.close();
conn.close();
Пример использования executeUpdate:
// Получение соединения
Connection conn = ...;
Statement stmt = conn.createStatement();
// Выполнение INSERT
int updatedRows = stmt.executeUpdate("INSERT INTO users (name) VALUES ('John Doe')");
System.out.println("Inserted rows: " + updatedRows);
stmt.close();
conn.close();
Пример использования execute:
// Получение соединения
Connection conn = ...;
Statement stmt = conn.createStatement();
// Выполнение DDL
boolean isResultSet = stmt.execute("CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR(255))");
if (!isResultSet) {
System.out.println("Table created or updated count: " + stmt.getUpdateCount());
}
stmt.close();
conn.close();