📄 dbconnectionmanager.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 + -