读书人

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

发布时间: 2012-01-30 21:15:58 作者: rapoo

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语句有问题吧.

读书人网 >Java Web开发

热点推荐