程序不应依赖于虚拟机的finalize()方法自动的回收数据库资源,而应手动在finally代码块中进行数据库资源释放操作。

    1. Connection conn=null;
    2. PreparedStatement stmt=null;
    3. try{
    4. conn = DriverManager.getConnection(some_connection_string);
    5. stmt = conn.prepareStatement(sqlquery);
    6. ...
    7. } catch(SQLException e){
    8. log(e);
    9. }finally{
    10. if(con!=null){
    11. try {
    12. conn.close();
    13. } catch (SQLException e) {
    14. log(e);
    15. }
    16. }
    17. if(stmt!=null){
    18. try {
    19. stmt.close();
    20. } catch (SQLException e) {
    21. log(e);
    22. }
    23. }
    24. }