(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
是自己编的 可以引用 连接池思想就是这个啊不过你可以下载 已经编好的连接池 上面有API 自己可以按照这个思想 就回用 了;
import java.io.FileInputStream
public class ConnectionPool{
private Vector<Connection>pool
private String url
private String username
private String password
private String driverClassName
// 连接池的大小,也就是连接池中有多少个数据库连接。
private int poolSize = 1
private static ConnectionPool instance =null
//私有的构造方法,禁止外部创建本类的对象。
// 使用了设计单子模式
private ConnectionPool(){
init()
}
// 返回当前连接池的一个对象
public static ConnectionPool getInstance(){
if(instance==null){
instance=new ConnectionPool()
}
return instance
}
//连接池初始化方法,读取属性文件的内容,建立连接池中的初始连接
private void init(){
pool= new Vector<Connection>(poolSize)
addConnection()
}
//返回连接到连接池中
public synchronized void release(Connection conn){
pool.add(conn)
}
// 关闭连接池中的所有数据库连接
public synchironized void closePool(){
for(int i=0i<pool.size()i++){
try{
((Connection)pool.get(i)).close()
}catch(SQLExcepiton e){
e.printStachTrace()
}
pool.remove(i)
}
}
/**
* 返回连接池中的一个数据库连接
*/
public synchronized Connection getConnection(){
if(pool.size()>0){
Connection conn = pool.get(0)
pool.remove(conn)
return conn
}else{
return null
}
}
// 在连接池中创建初始设置的的数据库连接
private void addConnection(){
Connection conn = null
for (int i=0i<poolSizei++){
try{
Class.forName(driverClassName)
conn=java.sql.Drivermanager.getConnection(url,username,password)
pool.add(conn)
}catch(ClassNotFoundException e){
e.printStachTrace()
}catch(){}
}
}
}