示例一:
JDBC数据库的关闭
public static void close(Connection con) { if (con != null) try { con.close(); } catch (SQLException e) { // 不做任何处理,静默处理 } } public static void close(ResultSet rs) { if (rs != null) try { rs.close(); } catch (SQLException e) { // 不做任何处理,静默处理 } } public static void close(Statement stmt) { if (stmt != null) try { stmt.close(); } catch (SQLException e) { // 不做任何处理,静默处理 } } public static void DBClose(ResultSet rs, Statement stmt, Connection conn) { try { close(rs); } finally { try { close(stmt); } finally { close(conn); } } }
示例二:
失败的关闭和释放 JDBC 连接可能导致其它用户的连接经历长时间的等待。虽然超时的JDBC 连接会被 WebSphere Application Server 退回而被回收 ,但必须等待这种情形发生。 使用完 JDBC 资源后关闭它们,还可以显式关闭 JDBC ResultSets。如果没有显式关闭语句,则在完成了相关语句之后会释放 ResultsSets。 所以请确保您构建的代码在所有情况下,甚至在异常和错误条件下,都能关闭和释放 JDBC 资源。以下代码显示了 JDBC 资源的获得和使用都封装在“Try-Catch-Finally”结构中。其中,在finally 子句中处理 JDBC 资源的关闭,使所有情况下关闭都将发生。 关闭 JDBC Connection 和 preparedStatement 的正确方式 Connection conn = null; ResultSet rs = null; preparedStatement pss = null; try { conn = dataSource.getConnection(USERID,pASSWORD); pss = conn.prepareStatement ("SELECT SAVESERIALZEDDATA FROM SESSION.pINGSESSION3DATA WHERE SESSIONKEY = ?"); pss.setString(1,sessionKey); rs = pss.executeQuery(); pss.close(); conn.close(); } catch (Throwable t) { // Insert Appropriate Error Handling Here } finally { // The finally clause is always executed - even in error // conditions preparedStatements and Connections will always be closed try { if (pss != null) pss.close(); } catch(Exception e) {} try { if (conn != null) conn.close(); } catch (Exception e){} } }
public static void closed(ResultSet rs, PreparedStatement pstm, Connection con) {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (pstm != null) {
pstm.close();
pstm = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}