Sobes.tech
Junior

execute, executeQuery və executeUpdate metodları arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

JQuery və executeQueryexecuteUpdate 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.

  1. executeQuery(String sql):

    • SELECT tipli SQL sorğularını yerinə yetirmək üçün nəzərdə tutulmuşdur.
    • Sorğunun nəticələrini ehtiva edən ResultSet obyektini qaytarır.
    • Sorğu SELECT deyilse, SQLException istisnası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();
    }
    
  2. executeUpdate(String sql):

    • INSERT, UPDATEDELETE tipli 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 ResultSet qaytarırsa, SQLException atı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();
    }
    
  3. execute(String sql):

    • Hər hansı SQL sorğusunu yerinə yetirmək üçün ümumi metod.
    • boolean qaytarı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 execute true qaytardısə, getResultSet() istifadə edilərək ResultSet alın.
      • Əgər execute false qaytardısə, getUpdateCount() istifadə edilərək dəyişdirilən sətirlərin sayı alın.
    // `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.