Junior
Маалыматтар базасы менен байланышту туура жабуу үчүн кандай кылуу керек?
sobes.tech AI
AIден жооп
try-with-resources блокун колдонуу:
// Ресурстарды автоматтык түрдө жабуу үчүн жарыялоо
try (
Connection connection = DriverManager.getConnection("jdbc:h2:mem:testdb", "sa", ""); // Connection объектисин алуу
Statement statement = connection.createStatement(); // Statement объектисин түзүү
ResultSet resultSet = statement.executeQuery("SELECT 1") // Суроо жүргүзүү жана ResultSet алуу
) {
// ResultSetтен алынган маалыматтар менен иштөө же башка операцияларды аткаруу
while (resultSet.next()) {
System.out.println(resultSet.getInt(1));
}
} catch (SQLException e) {
// Мүмкүн болгон SQLException иштетүү
e.printStackTrace();
}
Бул ыкманын артыкчылыктары:
- Автоматтык жабуу: Ресурстар (Connection, Statement, ResultSet)
tryблокунан чыгып жатканда кепилденген түрдө жабылат, даже если возникнет исключение. - Таза код:
close()чакыруунуfinallyблокунда көрсөтүүнү талап кылбайт, бул boilerplate кодду азайтат. - Исключениенин иштетилиши: Эгер ресурсту жабуу учурунда исключение болсо, ал
tryблокунда пайда болгон исключениенин ордуна басмырланбайт.
Альтернативдүү, азыраак сунушталуучу жол — finally блокунда ачык жабуу:
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");
// Маалыматтар менен иштөө
while (resultSet.next()) {
System.out.println(resultSet.getInt(1));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// Ресурстарды ачык жабуу
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();
}
}
}
Бул ыкма көбүрөөк орун алат жана каталарга дуушар болушу мүмкүн, өзгөчө ресурстарды жабуу учурунда исключениелерди иштетүүдө. try-with-resources колдонуу сунушталат.