Junior
Ποια είναι η διαφορά μεταξύ των μεθόδων execute, executeQuery και executeUpdate;
sobes.tech AI
Απάντηση από AI
executeQuery(): Χρησιμοποιείται για την εκτέλεση SQL τελεστών που επιστρέφουν ένα μοναδικό σύνολο αποτελεσμάτων (π.χ. τελεστέςSELECT). Επιστρέφει ένα αντικείμενοResultSet.executeUpdate(): Χρησιμοποιείται για την εκτέλεση SQL τελεστών που τροποποιούν τη βάση δεδομένων και επιστρέφουν τον αριθμό των ενημερωμένων γραμμών (π.χ.INSERT,UPDATE,DELETE,CREATE TABLE,DROP TABLE). Επιστρέφει ένανint.execute(): Μια πιο ευέλικτη μέθοδος. Μπορεί να εκτελέσει οποιοδήποτε τύπο SQL τελεστή. Επιστρέφει έναbooleanπου δείχνει αν επιστράφηκε έναResultSet. Ανtrue, το αποτέλεσμα είναι έναResultSet. Ανfalse, το αποτέλεσμα είναι ο αριθμός των ενημερωμένων γραμμών. Για την απόκτηση του πραγματικού αποτελέσματος, πρέπει να χρησιμοποιηθούνgetResultSet()ήgetUpdateCount().
| Μέθοδος | Σκοπός | Επιστρεφόμενη τιμή | Παράδειγμα χρήσης |
|---|---|---|---|
executeQuery |
Εκτέλεση SELECT |
ResultSet |
Ανάκτηση δεδομένων από έναν πίνακα. |
executeUpdate |
Εκτέλεση INSERT, UPDATE, DELETE, DDL |
int (αριθμός τροποποιημένων γραμμών) |
Προσθήκη, τροποποίηση ή διαγραφή εγγραφών; δημιουργία ή διαγραφή πινάκων. |
execute |
Οποιοσδήποτε SQL τελεστής | boolean (true αν επιστράφηκε ResultSet) |
Όταν ο τύπος του τελεστή δεν είναι γνωστός εκ των προτέρων ή ο τελεστής μπορεί να επιστρέψει δεδομένα και μετρήσεις. |
Παράδειγμα χρήσης του execute():
// Υποθέτουμε ότι η δήλωση έχει ήδη δημιουργηθεί
boolean isResultSet = statement.execute("SELECT * FROM users WHERE id = 1 OR INSERT INTO logs (message) VALUES ('User fetched')");
if (isResultSet) {
// Επεξεργασία ResultSet
try (ResultSet rs = statement.getResultSet()) {
while (rs.next()) {
// Ανάγνωση δεδομένων
}
}
} else {
// Επεξεργασία του αριθμού των ενημερωμένων γραμμών
int updateCount = statement.getUpdateCount();
// Επεξεργασία updateCount
}