⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbconnectionpool.java

📁 一个数据库连接池的完整代码
💻 JAVA
字号:
package eise.db;//------------------------------------------------------------------------------import java.util.*;import java.sql.*;//------------------------------------------------------------------------------public class DBConnectionPool{    private int checkedOut=0;//被占用的连接数目    private Vector freeConnections;//空闲的连接    private int maxConn;//最大的连接数    private String name;//数据库类型的名称,如MySQL, SQL SERVER, ACCESS等    private String password;//密码    private String URL;//连接的地址    private String user;//连接的用户    private DBConnectionManager connMgr=null;//------------------------------------------------------------------------------    public DBConnectionPool(DBConnectionManager connMgrObj,String nameStr, String urlStr, String userStr, String passwordStr, int maxInt){        connMgr=connMgrObj;        freeConnections = new Vector();        name = nameStr;        URL = urlStr;        user = userStr;        password = passwordStr;        maxConn = maxInt;        checkedOut=0;    }//------------------------------------------------------------------------------    public synchronized void freeConnection(Connection connection){        freeConnections.addElement(connection);        checkedOut--;        notifyAll();    }//------------------------------------------------------------------------------    public synchronized Connection getConnection(){        Connection connection = null;        if(freeConnections.size()>0)           {connection = (Connection)freeConnections.firstElement();            freeConnections.removeElementAt(0);            try{if(connection.isClosed())                  {connMgr.log("此连接已经关闭:" + name);                   connection = getConnection();                  }                }            catch(SQLException ee)               {connMgr.log("取得连接时出现错误:" + name);                connection = getConnection();               }           }        else if(maxConn == 0 || checkedOut < maxConn){connection = newConnection();}        if(connection != null){checkedOut++;}        return connection;    }//------------------------------------------------------------------------------    public synchronized Connection getConnection(long limit_long){        long now_long = (new java.util.Date()).getTime();        Connection connection;        while((connection = getConnection()) == null)            {try{wait(limit_long);}             catch(InterruptedException ee) {connMgr.log("等待空闲的连接时出现错误:" + name);}             if((new java.util.Date()).getTime() - now_long >= limit_long){return null;}            }        return connection;    }//------------------------------------------------------------------------------    private Connection newConnection(){        Connection connection = null;        try{if(user == null){connection = DriverManager.getConnection(URL);}            else{connection = DriverManager.getConnection(URL, user, password);}            connMgr.log("成功建立新的连接:" + name);           }        catch(SQLException ee)           {connMgr.log(ee, "建立新连接时失败: " + URL);            return null;           }        return connection;    }//------------------------------------------------------------------------------    public synchronized void release(){        for(Enumeration enumeration = freeConnections.elements(); enumeration.hasMoreElements();)           {Connection connection = (Connection)enumeration.nextElement();            try{connection.close();                connMgr.log("成功关闭连接:" + name);               }            catch(SQLException ee)               {connMgr.log(ee, "关闭连接时失败:" + name);               }           }        freeConnections.removeAllElements();        checkedOut=0;    }//------------------------------------------------------------------------------}//内部类结束//------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -