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

📄 dbconnectionmanager.java

📁 功能还没做全的选课系统
💻 JAVA
字号:
package com.xuanke.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 
 * @author wengwy
 *  数据库连接池类,
 *  使用方法:
 *  1、通过调用静态函数setParameter设置数据库连接的参数
 *  	同时加载数据库驱动程序,如果加载失败,则抛出MyJDBCException
 *  2、通过调用静态函数getConnection获取数据库连接,
 *      如果连接失败,则抛出MyJDBCException
 *      如果1秒钟连接不上,则返回空
 *  3、通过freeConnection释放连接
 *      
 */
public class DBConnectionManager {
	private static String jdbcDriver,jdbcUrl,dbuser,dbpassword;
	public static void setParameter(String driver,String url,String user,String pwd) throws MyJDBCException{
		jdbcDriver=driver;
		jdbcUrl=url;
		dbuser=user;
		dbpassword=pwd;
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			throw new MyJDBCException("加载数据库驱动程序失败");
		}
	}
	private static final int poolsize=10;//连接池最多数据库连接数
	private static Connection[] conns=new Connection[poolsize];
	private static boolean[] inused=new boolean[poolsize];
	
	public static Connection getConnection()throws MyJDBCException{
		for(int k=0;k<5;k++){
			for(int i=0;i<poolsize;i++){
				if(!inused[i]){//第i个连接空闲
					if(conns[i]==null){//第一次使用该连接时建立数据库连接
						try {
							conns[i]=DriverManager.getConnection(jdbcUrl,dbuser,dbpassword);
						} catch (SQLException e) {
							throw new MyJDBCException("无法连接数据库");
						}
					}
					inused[i]=true;
					return conns[i];
				}
			}
			try {
				Thread.sleep(200);  //如没有空闲,等待200毫秒后继续
			} catch (InterruptedException e) {
				// TODO 自动生成 catch 块
				
			}
		}
		return null;
	}
	public static void freeConnection(Connection conn){
		for (int i=0;i<poolsize;i++){
			if(conns[i]==conn){
				inused[i]=false;
				return;
			}
		}
	}

}

⌨️ 快捷键说明

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