ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:18.98KB ,
资源ID:7391160      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7391160.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java自定义数据库连接池.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java自定义数据库连接池.docx

1、java自定义数据库连接池java:自定义数据库连接池 连接池是非常好的想法,应用很普遍。自己写一个数据库连接池,并不像想象中那样困难。一般系统对连接池的功能不会有太多要求,使用自己的连接池未必是个坏主意。下面以Oracle为例,但是对Teradata和Greenplum也是可行的。另外我还实现了连接有效性检查(checkConn)和恢复连接(resetConn)的方法。本例编程采用的是JRE1.4.2环境(别忘了准备访问数据库的jar包)。有任何问题请随时留言,欢迎探讨。在Oracle内创建测试数据:drop table my_table; create table my_table( fi

2、eld_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) value

3、s(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

4、 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();

5、 this.url=poolConfiguration.getUrl(); this.usr=poolConfiguration.getUsr(); this.pss=poolConfiguration.getPss(); this.connections=new Connectionthis.connCount; this.connStatus=new Stringthis.connCount; for(int i=0;ithis.connCount;i+) this.connStatusi=X;/初始化全部未连接 this.lastQueryTime = new Datethis.conn

6、Count; 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 Connectionthis.connCount; this.connStatus=new Stringthis.connCount; for(int i=0;ithis.connCount;i+) this.connStatusi=X;/初始化全部未连接 this.lastQueryTime = new Dat

7、ethis.connCount; public void initPool() if(connCount1) System.out.println(请正确设置连接池窗口个数); else try Class.forName(this.cls);/register class catch(ClassNotFoundException e) System.out.println(e.getMessage(); catch(Exception e) System.out.println(e.getMessage();/other exceptions for(int i=0;ithis.connCo

8、unt;i+) try this.connectionsi=DriverManager.getConnection(this.url, this.usr, this.pss); this.connStatusi=Y; catch(SQLException e) System.out.println(e.getMessage(); catch(Exception e) System.out.println(e.getMessage();/other exceptions System.out.println(initPool is ready.); /end if public void fre

9、ePool() for(int i=0;ithis.connCount;i+) try mit(); this.connectionsi.close(); this.connStatusi=X; this.lastQueryTimei=null; catch(Exception e) try this.connectionsi.close(); this.connStatusi=X; this.lastQueryTimei=null; catch(Exception e1) System.out.println(e1.getMessage();/just for catch System.ou

10、t.println(freePool is over .); public DBPoolConnection getPoolConn() throws DBPoolIsFullException DBPoolConnection poolConnection = new DBPoolConnection(); poolConnection.connNbr=getConnNbr(); if(poolConnection.connNbr=-1) throw new DBPoolIsFullException(连接池已满); else poolConnection.conn=getConn(pool

11、Connection.connNbr); return poolConnection; public void freePoolConn(DBPoolConnection poolConnection) if(poolConnection=null) System.out.println(poolConnection=null,不需要释放); else freeConn(poolConnection.connNbr); public void printPoolStatus() for(int i=0;ithis.connStatus.length;i+) System.out.println

12、(); System.out.print(this.connStatusi.toString(); if(this.lastQueryTimei=null) System.out.print(-null ); else System.out.print(-+this.lastQueryTimei.toString()+ ); System.out.println(); public String getCls() return this.cls; public String getUrl() return this.url; public String getUsr() return this

13、.usr; int getConnNbr() int iConn=-1; for(int i=0;i=0) checkResult=true;/不需要重连 else if(checkMessage.indexOf(does not exist)=0) checkResult=true;/不需要重连 else if(checkMessage.indexOf(Syntax error)=0) checkResult=true;/不需要重连 else checkResult=false;/需要重连 return checkResult; boolean resetConn(DBPoolConnect

14、ion poolConnection) boolean result=false;/默认不需要重建连接 if(poolConnection=null) System.out.println(poolConnection=null,不知道您想重设哪个连接); else if(poolConnection.connNbr=-1) System.out.println(poolConnection.connNbr=-1,不知道您想重设哪个连接); else if(checkConn(poolConnection)=true) System.out.println(连接有效,不需要重设); else

15、/重设连接 try Class.forName(this.cls);/register class catch(ClassNotFoundException e) System.out.println(e.getMessage(); catch(Exception e) System.out.println(e.getMessage();/other exceptions try this.connectionspoolConnection.connNbr=DriverManager.getConnection(this.url, this.usr, this.pss); this.connS

16、tatuspoolConnection.connNbr=Y; System.out.println(poolConnection.connNbr+连接已重建); result = true;/告知调用者连接已重建 catch(SQLException e) System.out.println(e.getMessage(); catch(Exception e) System.out.println(e.getMessage();/other exceptions return result; void freeConn(int i) try if(i=-1) System.out.print

17、ln(i=-1,不需要释放); else mit(); catch(SQLException e) System.out.println(e.getMessage(); catch(Exception e) System.out.println(e.getMessage();/other exceptions this.connStatusi=Y; DBPoolConfiguration.javapackage dataWebService; public class DBPoolConfiguration private String cls; private String url; pri

18、vate String usr; private String pss; private int connCount;/连接数 public String getCls() return cls; public void setCls(String cls) this.cls = cls; public String getUrl() return url; public void setUrl(String url) this.url = url; public String getUsr() return usr; public void setUsr(String usr) this.u

19、sr = usr; public String getPss() return pss; public void setPss(String pss) this.pss = pss; public int getConnCount() return connCount; public void setConnCount(int connCount) this.connCount = connCount; DBPoolConnection.java:package dataWebService; import java.sql.Connection; public class DBPoolCon

20、nection public int connNbr=-1; public Connection conn=null; DBPoolConnection() this.connNbr=-1; this.conn = null; DBPoolIsFullException.javapackage dataWebService; public class DBPoolIsFullException extends Exception static final long serialVersionUID=1L; DBPoolIsFullException(String message) super(

21、message); Test.java package myAction; import dataWebService.DBPool; import dataWebService.DBPoolConnection; import dataWebService.DBPoolConfiguration; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; public class Test static String rpad(String str,int len) Str

22、ing s = str; if(s=null) s=; while(s.getBytes().lengthlen) s += ; return s; public static void main(String args) /初始化 String cls =,url=,usr=,pss=,sql=; Statement stmt=null; ResultSet rs=null; String gapStr=|;/分隔符 int connCount=2;/最大连接数 /连接Oracle 配置 cls = oracle.jdbc.driver.OracleDriver; url = jdbc:or

23、acle:thin:localhost:1521:myoradb; usr = abc; pss = 123; sql = select t.field_id,t.field_content,to_char(t.record_create_date,YYYYMMDD) day from my_table t; DBPoolConfiguration poolConfiguration=new DBPoolConfiguration(); poolConfiguration.setCls(cls); poolConfiguration.setUrl(url); poolConfiguration

24、.setUsr(usr); poolConfiguration.setPss(pss); poolConfiguration.setConnCount(connCount); DBPool myPool = new DBPool(poolConfiguration); myPool.initPool(); System.out.println(); System.out.print(after init Pool); myPool.printPoolStatus(); System.out.println(); DBPoolConnection c1=null; try c1 = myPool.getPoolConn(); System.out.println(); System.out.print(after getPoolConn); myPool.printPoolStatus(); System.out.println(); stmt = c1.conn.createSta

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1