Sobes.tech
Junior

Verilənlər bazası ilə əlaqəni düzgün şəkildə necə bağlamaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

try-with-resources blokundan istifadə.

// Avtomatik bağlanacaq resursların elan olunması
try (  
    Connection connection = DriverManager.getConnection("jdbc:h2:mem:testdb", "sa", ""); // Connection obyektinin alınması
    Statement statement = connection.createStatement();  // Statement obyektinin yaradılması
    ResultSet resultSet = statement.executeQuery("SELECT 1") // Sorğunun icrası və ResultSet-in alınması
) {  
    // ResultSet-dən məlumatlarla işləmək və ya digər əməliyyatlar
    while (resultSet.next()) {  
        System.out.println(resultSet.getInt(1));  
    }  
} catch (SQLException e) {  
    // Mümkün SQLException istisnalarının idarə olunması
    e.printStackTrace();  
}  

Bu yanaşmanın üstünlükləri:

  • Avtomatik bağlanma: (Connection, Statement, ResultSet) resurslar try blokundan çıxıldıqdan sonra, hətta istisna baş verərsə belə, garantilidir.
  • Təmiz kod: finally blokunda close() çağırışlarına ehtiyac yoxdur, bu boilerplate kodu azaldır.
  • İstisna idarəetməsi: Resursun bağlanması zamanı istisna baş verərsə, bu, try blokunda baş verən istisnadan gizlənməz.

Alternativ, daha az tövsiyə olunan üsul, finally blokunda açıq bağlama:

Connection connection = null;  
Statement statement = null;  
ResultSet resultSet = null;  

try {  
    connection = DriverManager.getConnection("jdbc:h2:mem:testdb", "sa", "");  
    statement = connection.createStatement();  
    resultSet = statement.executeQuery("SELECT 1");  
    // Məlumatlarla işləmək
    while (resultSet.next()) {  
        System.out.println(resultSet.getInt(1));  
    }  
} catch (SQLException e) {  
    e.printStackTrace();  
} finally {  
    // Resursların açıqdan bağlanması, tərs sırayla
    if (resultSet != null) {  
        try {  
            resultSet.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
    }  
    if (statement != null) {  
        try {  
            statement.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
    }  
    if (connection != null) {  
        try {  
            connection.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
    }  
}  

Bu üsul daha mürəkkəb və səhvlərə açıqdır, xüsusən resursların bağlanması zamanı istisnalar baş verərsə. try-with-resources istifadə etmək tövsiyə olunur.