java自定义数据库连接池
java:自定义数据库连接池
连接池是非常好的想法,应用很普遍。自己写一个数据库连接池,并不像想象中那样困难。一般系统对连接池的功能不会有太多要求,使用自己的连接池未必是个坏主意。下面以Oracle为例,但是对Teradata和Greenplum也是可行的。另外我还实现了连接有效性检查(checkConn)和恢复连接(resetConn)的方法。本例编程采用的是JRE1.4.2环境(别忘了准备访问数据库的jar包)。有任何问题请随时留言,欢迎探讨。
在Oracle内创建测试数据:
drop table my_table;
create table my_table(
field_id varchar2(3),
field_content varchar2(60),
record_create_date date default sysdate
);
insert into my_table(field_id,field_content) values('001','this is first record');
insert into my_table(field_id,field_content) values('002','this is second record');
insert into my_table(field_id,field_content) values('003','this is third record');
commit;
DBPool.java:
package dataWebService;
import java.sql.DriverManager;
import java.util.Date;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public class DBPool{
private String cls;
private String url;
private String usr;
private String pss;
private int connCount = 3;//连接数
private Connection[] connections;//保存数据库连接
private String[] connStatus;// 已连可用Y 已连不可用N 未连接X
private Date[] lastQueryTime;//时间戳
public DBPool(DBPoolConfiguration poolConfiguration){
this.connCount=poolConfiguration.getConnCount();
this.cls=poolConfiguration.getCls();
this.url=poolConfiguration.getUrl();
this.usr=poolConfiguration.getUsr();
this.pss=poolConfiguration.getPss();
this.connections=new Connection[this.connCount];
this.connStatus=new String[this.connCount];
for(int i=0;i
this.connStatus[i]="X";//初始化全部未连接
}
this.lastQueryTime = new Date[this.connCount];
}
public DBPool(String cls,String url,String usr,String pss){
this.cls=cls;
this.url=url;
this.usr=usr;
this.pss=pss;
this.connections=new Conn