Junior
Каква е разликата между методите execute, executeQuery и executeUpdate?
sobes.tech AI
Отговор от AI
executeQuery се използва за изпълнение на SELECT заявки и връща обект ResultSet с резултатите.
executeUpdate се използва за изпълнение на DML (INSERT, UPDATE, DELETE) или DDL (CREATE, ALTER, DROP) команди. Връща броя на засегнатите редове.
execute може да изпълни всеки тип SQL команда. Връща булева стойност: 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 |
Всеки SQL команден ред |
Пример за използване на 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);
}
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("Вмъкнати редове: " + 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("Брой засегнати редове или създаден таблица: " + stmt.getUpdateCount());
}
stmt.close();
conn.close();