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

В чем разница между методами 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();