这是自己开发的一个数据库连接池,在设计时充分考虑的开发中效率,效果还是欢迎大家都来测试。
下载地址:http://down5.zol.com.cn/bbs_upload/upload/2006/03_28/1143531695286.rar
包中已经实现了Connection接口。开发时引用本包内的Connection类
特点:
1、实现跨数据库平台:因为程序传递的参数一定的,但是各个数据库语句有很大差别。将SQL语句存放在文件外部(一般为properties文件)给与一个关键字。在程序中调用此关键字获得SQL语句。如果有参数可以使用?或者@@参数索引@@调用参数。这样非常方便更改SQL语句而不需要重新编译Class。如果都是?参数。可以用PreparedStatement调用。如果包含@@参数索引@@,通过包内的DynamicSQL调用
例如:
使用?:
SQLServer.properties文件中
authors = select * from authors where au_lname like ? and au_fname like ?
在Java中
Connection = ConnectionPools.getConnection();
PreparedStatement ps = cn.createPreparedStatement(cn.getSQL("authors"));
ps.setString(1,"h");ps.setString(2,"h");
java.sql.ResultSet rs = ps.executeQuery();
使用@@索引@@
SQLServer.properties文件中
authors = select * from authors where au_lname like @@1@@ and au_fname like @@1@@
在Java中
Connection = ConnectionPools.getConnection();
DynamicSQL ds = cn.getDynamicSQL("authors");
ds.setString(1,"h");
org.magus.sql.ResultSet rs = cn.executeQuery(ds);
可以看出使用索引方式更灵活
通过使用自定义的ResultSet。可以实现不需要引入java.sql.*包。该对象通过cn.executeQuery获得,参数可以为SQL语句,也可以是ds。但是自定义ResultSet执行的SQL语句(DynamicSQL)。只支持常用类型,例如数字、字符、时间。其他还是需要使用preparedStatement。
2、启动缓存方式:在配置文件中设定cache=true。缓存中使用SQL语句和DynamicSQL作为键。将结果储存在缓存中,通过自己实现的ResultSet,并且不在常连数据库连接。使数据库利用更为合理,数据访问更快。也可以将PreaparedStatement生成的ResultSet缓存。不过需要做转换。org.magus.sql.ResultSet rs = new ResultSet(java.sql.ResultSet)。通过Connection.addCache(String key,ResultSet)存储,获得通过Connection.getCache(key)获得。Connection为org.magus.sql.Connection实例。
3、自动清理选项:autoClear=true。设定此选项后。可以时时找出未被释放的连接,并加入到空闲连接池中。该选项主要作用是找到那些没有使用关闭操作的的Connection和Statement。使资源能及时释放。
4、可自定义开发多种数据库,可以参考src目录下的org.magus.sql.database.DataBase。
配置说明:
1、配置单例数据库:只需要在根目录下设置db.properties。这是默认的位置。调用直接用无参的
ConnectionPoosl.getConnection();调用
2、配置多例数据库:需要pools.properties。在文件中指定多例数据库的文件路径
例如:pools.properties
db=/db.properties
oralce=/oracle.properties
3、数据库实例配置信息:例如db.properties
Driver=数据库驱动
Connection=连接字符串
User=连接用户名
Password=连接密码
Type=数据库类型。在org.magic.sql.database下SQLServer和MySQL、Oracle中一个。也可
以自定义。
//自动清理。注意启动自动清理会占用服务器端内存,并且可能会推迟一点访问时间。因为要遍历
一次连接池。
autoClear=true
//连接超时时间。在启动autoClear时有效
timeOut=10000
//Statement超时时间 在启动autoClear时有效
stmtTimtOut=10000
//启动缓存。缓存中保存的是ResultSet。是自己实现的ResultSet。避免和数据库常连。位于org.
cache=true
//清理时间间隔 在启动autoClear时有效
time=10000
//SQL语句存放路径,默认数据库类型.sql.properties
SQLPath=/SQLServer.properties
//最大连接数。默认无限制
maxConnection=100
//最大空闲数。默认无限制
maxFree=-1
//调试,显示信息
debug=false