Java 7 でもそのようなコードをよく見かけます。
Connection c = null;
PreparedStatement s = null;
try {
c = dataSource.getConnection();
String sql = "insert into table (column1, column2) values (?, ?);
s = c.prepareStatement(sql);
int i = 1;
s.setString(i++, "111");
s.setString(i++, "222");
s.execute();
} catch (SQLException e) {
log.error("failed to insert", e);
} finally {
DbUtils.close(s, c); // closes s and c with no questions
}
ただし、仕様によると、接続が閉じられると、すべてのステートメントと結果セットが解放されます。
JDBC ドライバーが JDBC API のルールに従って動作しない可能性があると聞きましたが、古い方法の方が優れています。私の質問は、それについて意見を聞くことでした。コードは見栄えが良くなりますが、危険な場合はどうなりますか? 最も好ましい方法は、ここで try-with-resourcesを使用することです。それは十分に安全ですか?