Столкнулся с кодом:
try (Connection conn = this.connect();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, name);
pstmt.setDouble(2, capacity);
pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
Почему Connection conn = this.connect();... записываются в скобках?
Она аналогична такой получается?
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = this.connect();
pstmt = conn.prepareStatement(sql)
pstmt.setString(1, name);
pstmt.setDouble(2, capacity);
pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
Нет, не аналогична. Вот если вы в добавленном блоке finaly закроете соединение, как это и положено делать , то тогда это будет аналогично. Первый вариант введен в java 7 и называется try-with-resources. Идея заключается в том, что блок try, отображенный в таком виде, сам вызывает метод close у истребуемых ресурсов после того, как они отработали, что часто забывают делать, как вы сейчас, соответственно, это является причиной проблем.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей