首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

proxool如何用?为什么小弟我的连接释放不了?

2012-01-30 
proxool怎么用?,为什么我的连接释放不了??获取及关闭连接的类是这样写的:importjava.beans.PropertyVetoEx

proxool怎么用?,为什么我的连接释放不了??
获取及关闭连接的类是这样写的:


import   java.beans.PropertyVetoException;
import   java.sql.Connection;
import   java.sql.DriverManager;
import   java.sql.PreparedStatement;
import   java.sql.ResultSet;
import   java.sql.SQLException;
import   java.sql.Statement;


public   class   DBUtil   {

              public   static   Connection   getConnection()     {
Connection   con=null;
    try{
con=DriverManager.getConnection( "proxool.oracle ");
}   catch   (SQLException   e)   {
e.printStackTrace();
}
return   con;

}

public   static   void   releaseResultSet(ResultSet   rs)   {
//   TODO   自动生成方法存根
try{
  if(rs!=null){
        rs.close();
    }

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

                  }

}

public   static   void   releaseStatement(PreparedStatement   ps)   {
        //   TODO   自动生成方法存根
      try{
              if(ps!=null){
                  ps.close();
              }
      }catch(   Exception   e){
            e.printStackTrace();

      }
}

public   static   void   releaseConnection(Connection   con)   {
//   TODO   自动生成方法存根
try{
                                if(con!=null){
                                //con.close();
                               
}

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

}
}

public   static   void   releaseStatement(Statement   ps)   {
//   TODO   自动生成方法存根
try{
                                if(ps!=null){
                                ps.close();
}

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

}
}

}


我使用
getConnection()创建连接没有问题,但是在关闭连接的时候
使用releaseConnection(),如果在releaseConnection()执行con.close(),即
显式关闭连接的话,下一次获取连接的时候报“使用的连接已经关闭的错误”。
如果不执行con.close(),则下次调用会创建新的连接多次之后就会达到上限,报“已经达到了连接最大数量”的错误。

请问这个问题应该如何解决?最好能提供使用的代码,谢谢!!



[解决办法]
lz的同一个Connection对象是否被多次使用了。
[解决办法]
一般连接池中的releaseConnection()方法是将从ConnectionPool中获得的Connection对象放回到ConnectionPool中,而不是物理性的关闭Connection对象。

参考一下:http://community.csdn.net/Expert/topic/5538/5538855.xml?temp=.8157007中的:


/*将连接返回给连接池*/
public synchronized void releaseConnection(Connection con) {
// 将指定连接加入到向量末尾
connections.addElement(con);
//连接数减一
inUse--;
}
[解决办法]
可能是读取第一次连接的ResultSet出错,将rs作为一个list返回试试
[解决办法]
你的sql语句有问题吧.

热点排行