conn.close()就是返回连接池,这是连接池最基本的功能。

解决方案 »

  1.   

    啊,大侠,conn.close()具有这个功能么?它不就是关闭么并释放资源么。
    谢谢你的指点,
    可是sun的文档上没有说conn.close()能够返回给连接池。
    我的意思是将使用完的conn还给连接池,省的连接池又去建立新的连接(当连接数不够用的时候)以免浪费资源。
    还请大家来解说解说
      

  2.   

    我给一个合适的代码示例吧
    Connection cont = null;
    Statement stmt = null;
    ResultSet rs = null;if(cont == null){
     conn = ds.getConnection();
    }//有时候cont会作为一个参数传入的,一个业务流程涉及多个方法,则把cont对象传入下一个方法中,也就是说,一次业务处理,连接数据库一次。//处理stmt.close();
    stmt = null;
    rs.close();
    rs = null;
    cont.close();
    cont = null;finally {
    try {
    if (stmt != null) {
    stmt.close();
    stmt = null;
    }
    if (rs != null) {
    rs.close();
    rs = null;
    }
    if (cont != null) {
    cont.close();
    cont = null;
    } } catch (SQLException e) {
    System.out.println(e);
    }以上的代码对于JDBC算是比较ok的了。
      

  3.   

    那就是说我以前用的代码是完全正确的了。使用完了后只是close()就行了。“不会因为这个connection来自于连接池,所以需要额外的returnToPool之类的过程了,即使有这样的过程,也是连接池在底层帮俺们完成的了。
    呵呵,谢谢热心的弟兄。现在有把握多了
      

  4.   

    cont.close();
    是返回连接到缓冲池,之所以要返回是因为保持一个connection对象是需要系统资源的。而且进行数据库连接非常的毫系统资源的,想想啊,就算是本机,一个Connection对象也是一次web层面上的连接啊,两个服务器之间的连接。JDBC2.0中已经是DataSource组件封装了JDBC1.0中的DriverManager组件了,在1。0中,数据库连接池要自己编码实现,虽然也不难,但是性能不好。然后2.0帮我们实现了连接池的功能,只要实例化一个DateSource实例则可。于是2.0里面的close就是将连接放回连接池了,而不是直接关闭。其中的性能,一般都是指运行期间的性能,1.0里面,每次请求Connection对象都是去重新连接一次数据库,而2.0里面系统一启动就实例化了一个DataSource对象,也就是说初始化了一堆的Connection对象,以后就是用就是了,不占CPU,只占一点点固定的内存而已。这样,运行期间就不再需要去一步步的连接数据库了。然后关于驱动程序,我就不多说了。