Junior
execute, executeQuery və executeUpdate metodları arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
JQuery və executeQuery və executeUpdate metodları JDBC vasitəsilə SQL sorğularını yerinə yetirmək üçün istifadə olunur, lakin müxtəlif növ sorğular üçün nəzərdə tutulmuşdur və müxtəlif nəticələr qaytarır.
-
executeQuery(String sql):SELECTtipli SQL sorğularını yerinə yetirmək üçün nəzərdə tutulmuşdur.- Sorğunun nəticələrini ehtiva edən
ResultSetobyektini qaytarır. - Sorğu
SELECTdeyilse,SQLExceptionistisnasını atır.
// `executeQuery` istifadə nümunəsi String sql = "SELECT COUNT(*) FROM users"; try (ResultSet rs = statement.executeQuery(sql)) { if (rs.next()) { int userCount = rs.getInt(1); System.out.println("İstifadəçi sayı: " + userCount); } } catch (SQLException e) { e.printStackTrace(); } -
executeUpdate(String sql):INSERT,UPDATEvəDELETEtipli SQL sorğularını yerinə yetirmək üçün nəzərdə tutulmuşdur.- Həmçinin, DDL əmrlərinin (məsələn,
CREATE TABLE,ALTER TABLE) yerinə yetirilməsi üçün istifadə edilə bilər. - Dəyişdirilən sətirlərin sayını və ya 0-ı qaytarır (
int). - Sorğu
ResultSetqaytarırsa,SQLExceptionatır.
// `executeUpdate` istifadə nümunəsi String sql = "UPDATE products SET price = price * 1.1 WHERE category = 'electronics'"; try { int updatedRows = statement.executeUpdate(sql); System.out.println("Yenilənən sətirlər: " + updatedRows); } catch (SQLException e) { e.printStackTrace(); } -
execute(String sql):- Hər hansı SQL sorğusunu yerinə yetirmək üçün ümumi metod.
booleanqaytarır:true, əgər nəticəResultSet-dirsə (məsələn,SELECTüçün), vəfalse, əgər nəticə dəyişdirilən sətirlərin sayı və ya heç bir şey olmayan sorğudur (məsələn,INSERT,UPDATE,DELETE, DDL).execute-dən sonra faktiki nəticəni almaq üçün:- Əgər
executetrueqaytardısə,getResultSet()istifadə edilərəkResultSetalın. - Əgər
executefalseqaytardısə,getUpdateCount()istifadə edilərək dəyişdirilən sətirlərin sayı alın.
- Əgər
// `execute` istifadə nümunəsi String sql = "CREATE TABLE IF NOT EXISTS logs (id INT PRIMARY KEY, message VARCHAR(255))"; try { boolean isResultSet = statement.execute(sql); if (isResultSet) { // Bu, SELECT sorğusudur try (ResultSet rs = statement.getResultSet()) { // Nəticələrin işlənməsi } } else { // Bu, INSERT, UPDATE, DELETE və ya DDL sorğusudur int updateCount = statement.getUpdateCount(); System.out.println("Təsir edən sətirlər və ya DDL nəticəsi: " + updateCount); } } catch (SQLException e) { e.printStackTrace(); }
Aşağıdakı cədvəldə əsas fərqlər göstərilmişdir:
| Metod | SQL sorğusunun növü | Qaytarılan dəyər | Nümunə sorğular |
|---|---|---|---|
executeQuery |
SELECT |
ResultSet |
SELECT * FROM users |
executeUpdate |
INSERT, UPDATE, DELETE, DDL |
int (təsir edilən sətir sayı və ya 0) |
INSERT INTO, UPDATE users, DROP TABLE |
execute |
Hər hansı | boolean (true əgər ResultSet; false əks halda) |
Hər hansı |
Ən çox, sorğunun növü əvvəlcədən məlumdursa, daha spesifik metodlardan (executeQuery, executeUpdate) istifadə etmək tövsiyə olunur, çünki bu, kodun aydınlığını artırır və tərtibçi və ya IDE-ə daha dəqiq yoxlamalar etməyə imkan verir. execute metodu, sorğunun növü dinamik və ya əvvəlcədən məlum olmayan hallarda istifadə olunur.