如何集成創建/接收連接,查詢數據庫以及可能使用Java 7的自動資源管理處理結果的公共JDBC方法,try-with資源聲明? (Tutorial)Java 7自動資源管理JDBC(試用資源語句)
的Java 7之前,通常的模式是這樣的:
Connection con = null;
PreparedStatement prep = null;
try{
con = getConnection();
prep = prep.prepareStatement("Update ...");
...
con.commit();
}
catch (SQLException e){
con.rollback();
throw e;
}
finally{
if (prep != null)
prep.close();
if (con != null)
con.close();
}
使用Java 7,你可以去:
try(Connection con = getConnection(); PreparedStatement prep = con.prepareConnection("Update ..."){
...
con.commit();
}
這將關閉Connection
和PreparedStatement
,但是回滾呢?我無法添加包含回滾的catch子句,因爲連接僅在try塊中可用。
你還在try塊之外定義連接嗎?這裏最好的做法是什麼,特別是在使用連接池的情況下?
我只是不會在這些情況下使用自動關閉。正如該術語已經表明,它只是關閉資源。順便說一句:把連接放在'try ...'塊之外是沒有用的,因爲連接已經關閉,你不能在try塊之後回滾。 – home 2012-02-13 12:06:01
可能的重複http://stackoverflow.com/questions/8066501/how-should-i-use-try-with-resources-with-jdbc – Raedwald 2012-02-13 12:30:00
@Rededwald:不,這不是重複。這裏是關於con.rollback()。 – Bijan 2014-06-28 07:46:24