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

📄 databaseconnection.java~1~

📁 试题库管理系统 该系统所包含的子系统有:用户管理子系统、课程管理子系统、习题管理子系统和试卷库管理子系统。而用户管理子系统下分的模块有:添加用户、删除用户和修改用户信息;课程管理子系统下分的模块有:创
💻 JAVA~1~
字号:
package server.pool;
import java.io.*;
import java.sql.*;
import java.util.*;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2008</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
/**
*数据库连接池
*/
public class DataBaseConnection {
        int minConn=2;							//连接池最少连接数
        int maxConn=5;							//连接池最多连接数
        String user="root";						//数据库用户名
        String password="123456";				//数据库密码
        String url="jdbc:mysql://localhost/testmanager?useUnicode=true&characterEncoding=GBK";
        int connAmount=0;							//现有连接的个数
        Stack connStack = new Stack();				//使用Stack保存数据库连接

private static DataBaseConnection instance;
        /**
        * 返回惟一实例。如果是第一次调用此方法,则创建该实例
        */
        public static synchronized DataBaseConnection getInstance(){
                if (instance == null) {
                        instance = new DataBaseConnection();
                }
                return instance;
        }
        /**
        *  构造函数实现类的初始化
        *  功能:注册驱动程序,根据最小连接数生成连接
        */
        private DataBaseConnection()
        {
                //注册驱动程序
                try{
                       // DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
                       Class.forName("com.mysql.jdbc.Driver");
                }catch(Exception e){
                }
                //根据最少连接数生成连接
                for(int i=0;i<minConn;i++){
                        connStack.push(newConnection());
                }
        }
        /**
        * 将不再使用的连接返回给连接池
        */
        public synchronized void freeConnection(Connection con) {
                connStack.push(con); 		//将指定连接入栈
                notifyAll();		 //唤醒正在等待连接的进程
        }
        /**
        * 从连接池获得一个可用连接。如没有空闲的连接且当前连接数小于最大连接
        * 数限制,则创建新连接。
        */
        public synchronized Connection getConnection() {
                Connection con = null;
                if (!connStack.empty()) {
                // 获取一个可用连接
                        con = (Connection)connStack.pop();
                }else if (connAmount < maxConn) {
                        con = newConnection();
                }
                else{
                        try{
                                wait(100000);
                                return getConnection();
                        }catch(InterruptedException ie){}
                }
                return con;
        }
        /**
        * 创建新的连接
        */
        private Connection newConnection() {
                Connection con = null;
                try {
                        con = DriverManager.getConnection(url, user, password);
                        connAmount++;
                }catch (SQLException e) {
                        return null;
                }
                return con;
        }
}

⌨️ 快捷键说明

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