Ποια είναι η διαφορά μεταξύ των μεθόδων execute, executeQuery και executeUpdate;
sobes.tech AI
Απάντηση από 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 |
Οποιαδήποτε 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();