Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ των μεθόδων 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();