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