📄 dbconnpool.java
字号:
/*
* 创建日期 2005-10-21
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package databaseConnectPool;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
import java.sql.*;
import java.util.*;
public class DBConnPool {
//正在使用连接的数量
private int using;
//目前可用的连接数,即空闲连接
private Vector connections=new Vector();
//最大连接数
private int maxconn;
//连接池名
private String poolname;
//数据库标识
private String dbid;
//驱动程序名
private String drivername;
//数据库帐号
private String username;
//数据库密码
private String passwd;
public DBConnPool(String poolname,String drivername,String dbid,
String username,String passwd,int maxconn){
this.poolname=poolname;
this.drivername=drivername;
this.dbid =dbid;
this.username =username;
this.passwd=passwd;
this.maxconn=maxconn;
}
/*将空闲连接返回给连接池*/
public synchronized void returnConnection(Connection conn){
//将指定连接加到向量末尾
connections.addElement(conn);
//连接用户减一
using--;
System.out.println(using);
}
/*从连接池得到一个连接*/
public synchronized Connection getConnection(){
Connection conn = null; //Connection是一个类,
//connections是一个向量,用于存储连接对象,它所存储是的所有空闲状态的可用连接
if (connections.size() > 0) {
System.out.println(connections.size());
//获取连接列表的第一个连接
conn = (Connection) connections.elementAt(0);
connections.removeElementAt(0);//获得一个连接,并将此连接从队列中删除.
//如果此连接已关闭,刚继续获取,
try {
if (conn.isClosed())
conn = getConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}
//如果实际使用的连接数小于最大连接数即有可用连接),就新增加一个连接
else if (maxconn == 0 || using < maxconn){
//如此时无可用连接(maxconn == 0)且连接数又未达到上限(using < maxconn)),就创建一个新连接
conn=newConnection();
}
//如果连接数已达到上限就返回空指针
if (conn!=null){
using++;
}
System.out.println(using);
return conn;
}
/*创建新的连接*/
public Connection newConnection(){
Connection conn=null;
try{
//加载驱动
Class.forName(drivername);
conn=DriverManager.getConnection(dbid,username,passwd);
}catch(Exception e){
e.printStackTrace();
return null;
}
return conn;
}
/*关闭所有连接*/
public synchronized void closeConn(){
Enumeration allConnections=connections.elements();
while (allConnections.hasMoreElements()){
Connection conn=(Connection) allConnections.nextElement();
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
connections.removeAllElements();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -