如何集成创建/接收连接,查询数据库以及可能使用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