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
tryblokundan çıxıldıqdan sonra, hətta istisna baş verərsə belə, garantilidir. - Təmiz kod:
finallyblokundaclose()çağırışlarına ehtiyac yoxdur, bu boilerplate kodu azaldır. - İstisna idarəetməsi: Resursun bağlanması zamanı istisna baş verərsə, bu,
tryblokunda 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.