Как закрыть statemant с помощью try-with-resorces?
public void dropUsersTable() {
String SQL = "DROP TABLE IF EXISTS user";
try (Connection connection = getConnection()) {
Statement statement = connection.createStatement();
statement.executeUpdate(SQL);
statement.close();
System.out.println("Table delete");
} catch (SQLException e) {
e.printStackTrace();
}
}
Ответы (1 шт):
Автор решения: Byb
→ Ссылка
В конструкции try-with-resources можно открывать несколько ресурсов, перечисляя их через точку с запятой:
public void dropUsersTable() {
String SQL = "DROP TABLE IF EXISTS user";
try (Connection connection = getConnection();
Statement statement = connection.createStatement())
{
statement.executeUpdate(SQL);
System.out.println("Table delete");
} catch (SQLException e) {
e.printStackTrace();
}
}
В приведённом выше коде закроется и statement, и connection, что абсолютно корректно.
Теоретически, переменную connection можно не объявлять:
public void dropUsersTable() {
String SQL = "DROP TABLE IF EXISTS user";
try (Statement statement = getConnection().createStatement())
{
statement.executeUpdate(SQL);
System.out.println("Table delete");
} catch (SQLException e) {
e.printStackTrace();
}
}
Однако в таком случае statement хоть и закроется, но останется открытым соединение к базе данных, что очень нежелательно. Поэтому лучше использовать первый вариант кода.