zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0
通常的操作方法
    public List<Category> queryCategory(String queryStr) throws SQLException {
        ArrayList<Category> catList = new ArrayList<Category>();
        PreparedStatement pstmt = DBUtil.getConnection().prepareStatement(
                queryStr);
        if (pstmt == null) {
            return catList;
        } else {
            ResultSet rst = pstmt.executeQuery();
            while (rst.next()) {
                Category c = new Category();
                c.setCategoryId(rst.getInt("CATEGORY_ID"));
                c.setCategoryName(rst.getString("CATEGORY_NAME"));
                c.setCategoryParent(rst.getInt("PARENT_ID"));
                catList.add(c);
            }

            rst.close();
            pstmt.getConnection().close();

        }

        return catList;
    }

这种方式是不保险的方式,因为此处并不处理异常,但是不排除会发生异常。
假设在黑体代码部分发生异常,那么下面的代码并不会执行,也就是说,rst,pstmt,con都不会关闭掉。
所以导致的结果是这些资源得不到释放。

解决的方法,就是在最后用finally去解决问题

    PreparedStatement pstmt = null;
        ResultSet rst = null;

        try {
            pstmt = this.getPstmt(queryStr);
            rst = pstmt.executeQuery();
            while (rst.next()) {
                Category c = new Category();
                c.setCategoryId(rst.getInt("CATEGORY_ID"));
                c.setCategoryName(rst.getString("CATEGORY_NAME"));
                c.setCategoryParent(rst.getInt("PARENT_ID"));
                catList.add(c);
            }

        } catch (SQLException e) {
            throw e;
        }finally{
            if(rst!=null){
               
                rst.close();
            }
            if(pstmt!=null){
                pstmt.close();
               
            }
            if(this.getCon()!=null&&this.getCon().getAutoCommit()){
                this.getCon().close();
            }
        }

这样,无论在那个地方发生了异常,都能让资源得到释放。






|----------------------------------------------------------------------------------------|
                           版权声明  版权所有 @zhyiwww
            引用请注明来源 http://www.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|
posted on 2010-02-09 15:19 zhyiwww 阅读(638) 评论(0)  编辑  收藏 所属分类: j2ee

只有注册用户登录后才能发表评论。


网站导航: