Java 所想所悟

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  5 随笔 :: 1 文章 :: 9 评论 :: 0 Trackbacks
首先发布到首页,实际上也是一个问题,希望和大家讨论一下.
实际中许多经验丰富的人认为在操作中要关闭jdbc,释放资源.当然可以使用连接池.
public boolean insert()
{
        
if(conn==null)
       
{
          conn
=DB.getConnection();
        }

        
try
        
{
        }

        
catch(Exception e)
        
{

        }

        
finally
        
{      try
             
{
               stmt.close();
               conn.close();
              }

              
catch(Exception e)
             
{
                  e.printStackTrace();
              }

         }

}

但是,每一个方法中建立一个连接,释放一个连接,需要占用大量的资源,同时,在我的一个项目中,出现conn is null的逻辑错误.
是不是应该把finally中的块去掉.这样在整个的数据库bean中只占用一个连接.
public class testBean()
{
    FieldType testField;
       
    testBean()
    
{
        conn
=DB.getConnection();
     }

    
public boolean insert()
 
{
        stmt.close();
        rs.close();
}


}

这样conn在作用域结束时就会自动释放,个人认为.
欢迎大家积极讨论.有些不解,希望能够共同进步.
posted on 2006-10-02 22:39 春花秋实 阅读(738) 评论(4)  编辑  收藏

评论

# re: 关于JDBC的问题 2006-10-03 15:15 Supergoal
通过使用连接池来避免每次向数据库直接建立连接的开销。
你第二段代码中所使用的方法是不对,因为你无法保证Connection一定被关闭,必须通过显试调用close方法才行。  回复  更多评论
  

# re: 关于JDBC的问题 2006-10-03 15:28 春花秋实
@Supergoal
实际上我也认为需要把Connection进行关闭,但是如果如第一种方法所示,在我的一个项目中出现了逻辑错误
在一个方法中进行了conn.close();
但不能保证
conn==null;  回复  更多评论
  

# re: 关于JDBC的问题 2006-10-04 02:48 Mongoose
...
finally{
try{if (stmt != null) stmt.close();)catch(Exception e) {}
try{if (conn != null) conn.close();)catch(Exception e) {}
}

你第二个代码中写的什么东西没有看懂.  回复  更多评论
  

# re: 关于JDBC的问题 2006-10-26 21:14 春花秋实
感觉这种方式效率比较低,还有connection全局开放,但是可能会不稳定,感觉还是连接池好。  回复  更多评论
  


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


网站导航: