0

ケース A:

try (Connection con = DriverManager.getConnection(myConnectionURL);
     PreparedStatement ps = con.prepareStatement("SELECT * FROM table"); 
     ResultSet rs = ps.executeQuery()) {

     processResults(rs);
} catch (SQLException e) {
    e.printStackTrace();
}

ケース B:

try (ResultSet rs = DriverManager.getConnection(myConnectionURL)
                                 .prepareStatement("SELECT * FROM table")
                                 .executeQuery()) {
     processResults(rs);
} catch (SQLException e) {
    e.printStackTrace();
}

A の場合con、自動的に閉じられますpsケースBrsはどうですか?ケース Bでは、変数がケース A のように作成されません。 conps

私の質問:両方のケースは完全に同一ですか? ケース Bに問題はありますか?

4

2 に答える 2

1

ケース B は正しくありません。なぜなら、Connectionも もPreparedStatement閉じることができないからです。ブロックで宣言されているアイテムのみtryが自動クローズされます。

于 2015-10-06T01:28:36.390 に答える