← Назад к вопросам
Для каких операций больше подходит executeUpdate
1.0 Junior🔥 141 комментариев
#Базы данных и SQL
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# executeUpdate в JDBC: назначение и применение
Основное назначение
executeUpdate() — это метод интерфейса Statement в JDBC, который предназначен для выполнения SQL-операций, не возвращающих результирующий набор данных. Он возвращает целое число, указывающее количество затронутых строк.
Для каких операций используется
1. INSERT (вставка данных)
Используется для добавления новых записей в таблицу:
Statement stmt = connection.createStatement();
String sql = "INSERT INTO users (name, email, age) VALUES ('Ivan', 'ivan@mail.com', 25)";
int affectedRows = stmt.executeUpdate(sql);
System.out.println("Вставлено строк: " + affectedRows); // 1
2. UPDATE (обновление данных)
Для изменения существующих записей:
Statement stmt = connection.createStatement();
String sql = "UPDATE users SET age = 26 WHERE name = 'Ivan'";
int affectedRows = stmt.executeUpdate(sql);
System.out.println("Обновлено строк: " + affectedRows);
3. DELETE (удаление данных)
Для удаления записей из таблицы:
Statement stmt = connection.createStatement();
String sql = "DELETE FROM users WHERE age < 18";
int affectedRows = stmt.executeUpdate(sql);
System.out.println("Удалено строк: " + affectedRows);
4. DDL операции (CREATE, ALTER, DROP)
Для создания, изменения и удаления структур БД:
Statement stmt = connection.createStatement();
String sql = "CREATE TABLE logs (id INT PRIMARY KEY, message VARCHAR(255))";
stmt.executeUpdate(sql); // Возвращает 0 для DDL операций
Когда НЕ использовать executeUpdate
executeQuery() используется для SELECT запросов, возвращающих ResultSet:
// Неправильно
stmt.executeUpdate("SELECT * FROM users");
// Правильно
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
Возвращаемое значение
- Для INSERT/UPDATE/DELETE: количество затронутых строк
- Для DDL операций: всегда возвращает 0
- JDBC драйверы могут вернуть -1 для неизвестного количества затронутых строк
Пример с PreparedStatement (рекомендуется)
Лучшая практика — использовать PreparedStatement для избежания SQL-инъекций:
String sql = "INSERT INTO users (name, email, age) VALUES (?, ?, ?)";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, "Ivan");
pstmt.setString(2, "ivan@mail.com");
pstmt.setInt(3, 25);
int affectedRows = pstmt.executeUpdate();
System.out.println("Вставлено: " + affectedRows);
Резюме
executeUpdate() подходит для INSERT, UPDATE, DELETE и DDL операций. Основное различие с executeQuery() — возврат количества затронутых строк вместо результирующего набора. Всегда используйте PreparedStatement для безопасности.