据说在使用后关闭所有JDBC资源是一个好习惯.但是,如果我有以下代码,是否有必要关闭Resultset和Statement?
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = // Retrieve connection
stmt = conn.prepareStatement(// Some SQL);
rs = stmt.executeQuery();
} catch(Exception e) {
// Error Handling
} finally {
try { if (rs != null) rs.close(); } catch (Exception e) {};
try { if (stmt != null) stmt.close(); } catch (Exception e) {};
try { if (conn != null) conn.close(); } catch (Exception e) {};
}
Run Code Online (Sandbox Code Playgroud)
问题是连接的关闭是否完成了工作,或者是否使用了一些资源.
可能重复:
何时关闭JDBC中的Connection,Statement,PreparedStatement和ResultSet
我已经为JDBC连接编写了一个简单的包装器并且它可以工作,但我希望尽可能地使用最佳实践来改进它.它基本上有类似的方法open(),close(),isOpened(),select(),insert(),update(),delete()和batch().为简单起见,我将仅在此处发布前4种方法.
public class Query{
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
//Database.open() returns a Connection ready to use
public void open (Database database) throws DatabaseException, SQLException{
if (!isOpened ()){
con = database.open ();
}
}
public void close () throws SQLException{
if (isOpened ()){
if (ps != null) ps.close ();
con.close ();
con = null;
}
}
public boolean isOpened …Run Code Online (Sandbox Code Playgroud)