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

📄 dbconnpool.java

📁 Java完全自学手册 全部随书代码 作者:马军 王灏
💻 JAVA
字号:
package stumng;

import java.sql.*;
import java.util.*;
/*连接池类.能够根据要求创建新连接,直到最大连接数为止.*/
public class DBConnPool {
       //实际使用中的连接数
       private int inUse=0;
       //空闲连接
       private Vector connections = new Vector();
       //连接池名
       private String poolname;
       //数据库标识
       private String dbid;
       //驱动程序名
       private String drivername;
       //数据库账号
       private String username;
       //数据库密码
       private String passwd;
       //最大连接数
       private int maxconn;

       public DBConnPool(String poolname, String drivername, String dbid, String username, String passwd, int maxconn) {
               this.poolname = poolname;
               this.dbid = dbid;
               this.drivername = drivername;
               this.username = username;
               this.passwd = passwd;
               this.maxconn = maxconn;
       }

       /*将连接返回给连接池*/
       public synchronized void releaseConnection(Connection con) {
               // 将指定连接加入到向量末尾
               connections.addElement(con);
               //连接数减一
               inUse--;
       }

       /*从连接池得到一个连接*/
       public synchronized Connection getConnection() {
               Connection con = null;
               if (connections.size() > 0) {
                       // 获取连接列表中获得第一个连接
                       con = (Connection) connections.elementAt(0);
                       connections.removeElementAt(0);
                       //如果此连接已关闭,则继续获取
        try {
           if (con.isClosed())
              con = getConnection();
        }
        catch (Exception ex) {
           ex.printStackTrace();
        }
               }
               //如果实际使用的连接小于最大连接数,就新创建一个连接
               else if (maxconn == 0 || inUse < maxconn) {
                       con = newConnection();
               }
               if (con != null) {
                       //连接数增一
                       inUse++;
               }
               //返回一个连接
               return con;
       }

       /*创建新的连接*/
       private Connection newConnection() {
               Connection con = null;
               try {
                       //加载驱动程序
                       Class.forName(drivername);
                       //建立连接
                       con = DriverManager.getConnection(dbid, username, passwd);
               }
               catch (Exception e) {
                       e.printStackTrace();
                       return null;
               }
               //返回该连接
               return con;
       }

       /*关闭所有连接*/
       public synchronized void closeConn() {
               Enumeration allConnections = connections.elements();
               while (allConnections.hasMoreElements()) {
                       Connection con = (Connection) allConnections.nextElement();
                       try {
                               con.close();
                       }
                       catch (SQLException e) {
                               e.printStackTrace();
                       }
               }
               connections.removeAllElements();
       }
}

⌨️ 快捷键说明

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