Java实现数据库连接池的代码..docx

上传人:太** 文档编号:69320465 上传时间:2023-01-01 格式:DOCX 页数:29 大小:41.35KB
返回 下载 相关 举报
Java实现数据库连接池的代码..docx_第1页
第1页 / 共29页
Java实现数据库连接池的代码..docx_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《Java实现数据库连接池的代码..docx》由会员分享,可在线阅读,更多相关《Java实现数据库连接池的代码..docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、I package com.kyo.connection;23 import java.sql.Connection;4 import j ava.sql.DatabaseMetaData;5 import j ava.sql.Driver;6 import java.sql.DriverManager;7 import java.sql.SQLException;8 import java.sql.Statement;9 import java.util.Enumeration;10 import java.util.Vector;1112 public class ConnectionPo

2、ol 1314 private ConnectionParam param;1516 private String testTable = n n; /测试连接是否可用的测试表名,默认没 有测试表1718 private Vector connections = null; /存放连接池中数据库连接的向量, 初始时为19 / null,它中存放的对象为PooledConnection型2021 public void setParam(ConnectionParam param 22 this.param = param;23 )2425 public ConnectionParam getP

3、aram( (1学科成绩(300分学校可根据每学年期末考试成绩对任教教师进行量化,量化标准如下:优秀率占60分、合格率占120分、学困生率占60分、平均分占60分。计分方法:优秀率得分;班级优秀率/30%*60分合格率得分:班级合格率/90%*120分学困生率得分:(1-班级学困生率/20%) *60分平均分得分:班级平均分/100*60分(五特色工作(加分,遵循教育规律,注重发现和培养学生特长,激发学生潜能,积极组织学生参加 上级教育行政主管部门批准的各级各类竞赛,为学校争得荣誉;教师参加各级举办 的公开课、优质课、教研论文评比活动,在市级以上立项并取得重大成果。指导学生参加各级举办比赛,并

4、获奖,按获奖情况分档计分,相对应班级的班主任加 5%o等级tdp市级县级学区级说明市级以上的以市级为准一等奖1005020加倍计分;他的以人数奖C(六其他工作二等奖804010三等奖50205优秀奖2000公开课、教研论文、优质课、按级别分档计分。等级市级县级学区级说明公开课、优质课、课题一等奖1005040获奖的加倍计分二等奖804020三等奖502010每位教师要积极参加学校组织的集体活动和突击任务工作,根据参加活动的次数、效果 分档计分。出色完成、按时完成、没按时完成但没影响学校工作、特别拖延影响学校工作或没完成 的,分别计20分、分分、0分、-20152 考核结果直接关系到教师的切身利

5、益和教育教学质量的提高。为加强对教师考 核工作的领导,学校成立小学教师综合考核领导小组,校长任组长,要注意总结往 年考核工作的经验,不断完善考核办法,使考核结果符合实际;要坚持公正、公开 的原则,将考核程序、标准和结果及时公布,增强考核工作的透明度;要切实做好 教师的思想工作,教育和引导教师正确认识和对待考核工作,确保考核工作有序进 行。154return conn; /返回创建的新的数据库连接155 )156157158 大159 *通过调用getFreeConnection (函数返回一个可用的数据库连接,160 *161 *如果当前没有可用的数据库连接,并且更多的数据库连接不能创162

6、*163*建(如连接池大小的限制),此函数等待一会再尝试获取。164 165 * return返回一个可用的数据库连接对象166 大/167168 public synchronized Connection getConnection( throws SQLException 169170/确保连接池己被创建1- I if (connections = null 173174175176177178179180181182183184185186187188189190191192193194195196197198199Connection conn = getFreeConnection

7、 (; / 获得个可用的数据库连接/如果目前没有可以使用的连接,即所有的连接都在使用中while (conn = null /等一会再试wait(250;conn = getFreeConnection (; /重新再试,直到获得可用的连接,如果/ getFreeConnection ( 返回的为 null/则表明创建一批连接后也不可获得可用连接return conn;/ 返回获得的可用的连接)/ 大本函数从连接池向量 connections 中返回一个可用的的数据库连接,如果*当前没有可用的数据库连接,本函数则根据 incrementalConnections 设置的值创建几个数据库连接,并

8、放入连接池中。如果创建后,所有的连接仍都在使用中,则返回null201202 private Connection getFreeConnection( throws SQLException203204 /从连接池中获得一个可用的数据库连接205 Connection conn = findFreeConnection(;206 if (conn = null 207 /如果目前连接池中没有可用的连接208 /创建一些连接209 createConnections(this.param.getIncrementaIConnections(;210/重新从池中查找是否有可用连接211 conn

9、 = findFreeConnection (;212 if (conn = null 213/如果创建连接后仍获得不到可用的连接,则返回null214 return null;215 )216 21 return conn;218219 220221 /*222 *223 *查找连接池中所有的连接,查找一个可用的数据库连接,224 *225 *如果没有可用的连接,返回null227 * return返回一个可用的数据库连接228 /229230 private Connection findFreeConnection( throws SQLException 231232 Connecti

10、on conn = null;233 PooledConnection pConn = null;234 /获得连接池向量中所有的对象235 Enumeration enumerate = connections.elements(;236 /遍历所有的对象,看是否有可用的连接二while (enumerate.hasMoreElements( 238 pConn = (PooledConnection enumerate.nextElement(;239 if ( !pConn.isBusy( 240 /如果此对象不忙,则获得它的数据库连接并把它设为忙241 conn = pConn.get

11、Connection(;242 pConn.setBusy(true;243 /测试此连接是否可用244 if (!testconnection(conn 245 /如果此连接不可再用了,则创建一个新的连接,246 /并替换此不可用的连接对象,如果创建失败,返回null247 try 248 conn = newConnection(;249 catch (SQLException e 250 System. out.println(H 创建数据库连接失败! n + e . getMessage (;251 return null;252 )253 pConn.setconnection(co

12、nn;255 break; /己经找到一个可用的连接,退出256 257 )258259 return conn;/ 返回找到到的可用连接260261 )262263 /*264 大265 *测试一个连接是否可用,如果不可用,关掉它并返回 false266 *267 *否则可用返回 true268 *269 *270 大271 大 param conn272 *需要测试的数据库连接273 *274 * Qreturn返回true表示此连接可用,false表示不可用275 */276277 private boolean testConnection (Connection conn 27827

13、9 try (281282283284285286287288289290291292293294295296297298299300301302303304305306307/判断测试表是否存在if (testTable.equals(/如果测试表为空,试着使用此连接的setAutoCommit (方法 /来判断连接否可用(此方法只在部分数据库可用,如果不可用,/抛出异常)。注意:使用测试表的方法更可靠conn , setAutoCommit(true; else /有测试表的时候使用测试表测试/ check if this connection is validStatement stmt

14、 = conn.createStatement(;stmt.execute(nselect count (* from + testTable; ) catch (SQLException e /上面抛出异常,此连接己不可用,关闭它,并返回false;closeConnection (conn;return false;/连接可用,返回truereturn true;)/ *此函数返回一个数据库连接到连接池中,并把此连接置为空闲。*308 大所有使用连接池获得的数据库连接均应在不使用此连接时返回它。309 *310 * param需返回到连接池中的连接对象311 */312;I ; publi

15、c void returnconnection (Connection conn 314315/确保连接池存在,如果连接没有创建(不存在),直接返回3161- if (connections = null 318 System. out .print In (连接池不存在,无法返回此连接到连接池中319 return;320 321322 PooledConnection pConn = null;323 Enumeration enumerate = connections.elements(;324 /遍历连接池中的所有连接,找到这个要返回的连接对象325 while (enumerate

16、.hasMoreElements( 326 pConn = (PooledConnection enumerate.nextElement(;327 /先找到连接池中的要返回的连接对象328 if (conn = pConn.getConnection( 329 /找到了,设置此连接为空闲状态330 pConn.setBusy(false;break;332 )336 )337338/*339 *340 *刷新连接池中所有的连接对象341 大342 *343 */344345 public synchronized void refreshConnections( throws SQLExce

17、ption 346347 /确保连接池己创新存在348 if (connections = null 349 System. out .printIn (连接池不存在,无法刷新! n;350 return;351 352353 PooledConnection pConn = null;354 Enumeration enumerate = connections.elements(;355 while (enumerate.hasMoreElements( 356 /获得一个连接对象357 pConn = (PooledConnection enumerate.nextElement(;35

18、8 /如果对象忙则等5秒,5秒后直接刷新359 if (pConn.isBusy( 360 wait (5000; / 等 5 秒2829 /*30*构造函数31 *32 * param param33 /34 public ConnectionPool(ConnectionParam param35 this.param = param;36 )3738 /丈夫39 *40*获取测试数据库表的名字41 *42 * return测试数据库表的名字43 */4445 public String getTestTable( 46 return this . testTable;47 )4849 /

19、 * *50 *51 *设置测试表的名字53 * param testTable362363 /关闭此连接,用一个新的连接代替它。364 closeConnection(pConn.getConnection(;365 pConn.setConnection(newConnection(;366 pConn.setBusy(false;367 )368369 )370371 /*372 373 *关闭连接池中所有的连接,并清空连接池。374 */375throws376 public synchronized void closeConnectionPool ( SQLException 37

20、7378 /确保连接池存在,如果不存在,返回379 if (connections = null 380 System. out.println(连接池不存在,无法关闭381 return;382 )383 PooledConnection pConn = null;384 Enumeration enumerate = connections.elements(;385 while (enumerate.hasMoreElements( 386 pConn = (PooledConnection enumerate.nextElement(;387 /如果忙,等5秒388 if (pConn

21、.isBusy( 389 wait (5000; / 等 5 秒390 )391 / 5秒后直接关闭它392 closeConnection(pConn.getConnection (;393 /从连接池向量中删除它394 connections.removeElement(pConn;395 )396397 /置连接池为空398 connections = null;399 )400401 /*402 *403 *关闭一个数据库连接404 火405 大 param需要关闭的数据库连接406 */407408 private void closeConnection (Connection c

22、onn 409 try (410 conn.close(;411 catch (SQLException e 412 System, out .printIn (n 关闭数据库连接出错:+ e . getMessage (;415416/*417 火418 大使程序等待给定的毫秒数419 *420 * param给定的毫秒数421 */422423 private void wait(int mSeconds 424 try 425 Thread.sleep(mSeconds;426 catch (InterruptedException e 427 428 )429430 /*431夫432

23、 *内部使用的用于保存连接池中连接对象的类 此类中有两个成员,一个是数据库的 连接,另一个是指示此连接是否 正在使用的标志。433 */434435 class PooledConnection 436437 Connection connection = null; / 数据库连接438439 boolean busy = false; /此连接是否正在使用的标志,默认没有正在使用441 /构造函数,根据个Connection构告个PooledConnection对象442 public PooledConnection(Connection connection 443 this.conn

24、ection = connection;444 445446 /返回此对象中的连接447 public Connection getConnection( 448 return connection;449 )450451 /设置此对象的,连接452 public void setconnection(Connection connection 453 this .connection = connection;454 )455456 /获得对象连接是否忙457 public boolean isBusy( 458 return busy;459 460461 /设置对象的连接正在忙462 p

25、ublic void setBusy(boolean busy 463 this.busy = busy;464 )Connection Param .javaJava代码L468 package com.kyo.connection;469470 import java.io.Serializable;471472/*473 * author niudongj ie.pt数据库连接池参数474 */475 public class ConnectionParam implements Serializable476477/*478 *479 */480 private480 private4

26、80 privatestaticfinal long serialVersionUID = IL;481482 privateStringdriver; /数据库连接驱动483 privateStringurl; /数据库连接URL484 privateStringuser; /数据库连接user485 privateStringpassword; / 数据库连接 password486 private487 privateint minConnection; /数据库连接池最小连接数int maxConnection; /数据库连接池最大连接数488 private long timeout

27、Value; /连接的最大空闲时间489 private long waitTime; /取得连接的最大等待时间490 private int incrementalConnections=5; /连接池自动增力口连接的数量491492 public String getDriver( 493 return driver;494 495496 public void setDriver(String driver 497 this.driver = driver;498 )499500 public String getUrl ( 501 return url;502 )503504 publ

28、ic void setUrl(String url 505 this.url = url;506 )507508 public String getUser ( 509 return user;510 )511512 public void setUser(String user 513 this .user = user;514 )516 public String getPassword( a 厂 return password;518 )519520 public void setPassword(String password 三this.password = password;522

29、 )523524 public int getMinConnection( 二return minConnection;526 )527528 public void setMinConnection(int minConnection529 this.minConnection = minConnection;530 )531532 public int getMaxConnection( 533 return maxConnection;534 )535536 public void setMaxConnection(int maxConnection this .maxConnectio

30、n = maxConnection;538 )539540 public long getTimeoutValue( 541 return timeoutvalue;544public void setTimeoutValue(long timeoutvalue 545 this.timeoutvalue = timeoutvalue;546 )547548 public long getWaitTime( 549 return waitTime;550 )551public void setWaitTime(long waitTime 553 this.waitTime = waitTime

31、;554 )555556 public void setlncrementalConnections(int incrementalConnections J this.incrementalConnections = incrementalConnections;558 )559560 public int getlncrementalConnections( 561 return incrementalConnections;562 )563 564 54 * String测试表的名字55 大/5657 public void setTestTable (String testTable

32、58 this.testTable = testTable;59 )6061 /*62*创建一个数据库连接池,连接池中的可用连接的数量采用类成员 initialconnections 中设置的值63 */6465 public synchronized void createPool ( throws Exception 6667/确保连接池没有创建/如果连接池己经创建了,保存连接的向量connections不会为空if (connections != null 68 return; /如果己经创建,则返回)/实例化JDBC Driver中指定的驱动类实例69 Driver driver =

33、(Driver (Class.forName(this.param.getDriver(.newlnstance(;DriverManager . registerDriver (driver; / 注册 JDBC 马区动程序77/创建保存连接的向量,初始时有0个元素78 connections = new Vector(;80 /根据initialconnections中设置的值,创建连接。81 createConnections(this.param.getMinConnection(;System. out .printIn (”数据库连接池创建成功! n ;)82 / *创建由numC

34、onnections指定数目的数据库连接,并把这些连接放入 connections 向量中83 * param numConnections*要创建的数据库连接的数目大/84 private void createConnections(int numConnections throws SQLException 96/循环创建指定数目的数据库连接J for (int x = 0; x 0& this.connections.size( = this.param.getMaxConnection( 104 break;10510610710810911011111211311411511611

35、7118119120121122123124125126127/ add a new PooledConnection object to connections vector/增加一个连接到连接池中(向量 connections 中)try ( connections.addElement(new PooledConnection(newConnection (; catch (SQLException e System.out.printin (n 创建数据库连接失败! ” + e , getMessage(;throw new SQLException (;System, out .pr

36、intIn (数据库连接己创建*创建一个新的数据库连接并返回它* Qreturn 返回一个新创建的数据库连接12S private Connection newConnection( throws SQLException 129130/创建一个数据库连接13 I Connection conn =DriverManager.getConnection(this.param.getUrl(,I / this . param. getUser (r this . param. getPassword (;133134/如果这是第一次创建数据库连接,即检查数据库,获得此数据库允许支持的135 /最

37、大客户连接数目136 / connections . size (=0表示目前没有连接己被创建137138 if (connections.size( = 0 139140 DatabaseMetaData metaData = conn.getMetaData(;141 int driverMaxConnections = metaData.getMaxConnections(;142143 /数据库返回的driverMaxConnections若为0 ,表示此数据库没有最大144/连接限制,或数据库的最大连接限制不知道145 / driverMaxConnections为返回的一个整数,表

38、示此数据库允许客户连接的数 目146/如果连接池中设置的最大连接数量大于数据库允许的连接数目,则置连接池 的 最大147/连接数目为数据库允许的最大数目148149 if (driverMaxConnections 0150& this.param.getMaxConnection ( driverMaxConnections 教师教育教学工作综合考核评价方案为进一步深化学校管理体制改革,引导和激励广大教师更加爱岗敬业、无私奉献,不断增强工作、学习的积极性和主动性,特制定教师教育教学工作综合考核评价方案。一、考核对象在职在岗的全体教师。二、考核内容及方法考核从道德规范、教学常规、研究与提高、教

39、育教学效果、特色工作等方面进行考核,总分800分(不包括加分。(一道德规范(100分1 .政治表现(5分认真学习党的路线、方针、政策,自觉抵制各种错误思潮和腐朽思想文化的影 响;在大是大非问题上,立场坚定,旗帜鲜明。2 .师德素养(10分遵守教师职业道德,为人师表,举止文明端庄;团结同志,顾全大局,服从领 导,关心集体,维护学校荣誉;公正、公平、严谨客观地行使监督评议职责,以自己良好的思 想和道德风范去影响和培养学生。3 .遵纪守法(5分遵守国家法律法规,遵守学校规章制度,以良好的思想政治素质影响和引领学生,不准 单纯以学习成绩评价学生,不耻视、不排除差生。4 .出勤(80分遵守学校作息时间,

40、遵守学校工作纪律。旷课1节扣10分,无请假或临时请假(特殊情况除外)事假半天、会议扣3分,事假半天扣2分,病假1天扣1分(住院期间不扣分),迟到、早退(包括会议、活动、上课)1次扣1分。1 .计划、总结(10分教学教研计划应符合学情、教情,符合课改新理念;教学总结应对典型课例、教 学方法、教学能力、学法指导等教学行为进行深刻的反思。2 .备课(100分按校教学管理备课要求执行课前必须写好教案,教案目标明确,重点难点突出,教学过程完整,各课课时达到规定要求。*目标明确,重点难点突出,教学过程完整:完成95%、80%、60%和60%以下的分别计100分、90分、80分和6030分*课时超2-5课时

41、、刚好、缺5课时以内、缺5课时以外的分别计100分、90分、80分和60-30分按备课的常规要求进行计分,平时检查和期末检查相结合,以上两项以百分比 相乘结果进行分档计分。.3 .课堂教学(90分按校教学管理课堂教学要求执行。以90分、80分、60分进行分档计分。4 .作业批改(100分,以40-48人为准,每超或少1人加或减1个百分点按校教学管理作业要求执行。采取抽查作业和调查了解的办法进行评估。可以 从作业数量、质量、批改分析记录和分层作业等几个方面评估分优、良、中、差。 平时检查占50%,期末检查占50%。(三研究与提高(100分L教材研究(50分每位教师每学期至少要上一节校级研讨课10

42、分,课后反思按要求完成的得10 分,每缺一份少1分2.培训提高(50分(1听课评课(25分积极参加听课评课活动。听课记录要反映教学过程,对授课教师对教材教法的 理解与使用,对学生学法的指导和学习策略的培养等项目进行评价,对所听的课提 出自己的意见和建议。每学期至少听课20节(完整一节记录得1分,最高20 分),(2业务学习(10分积极参加教研组、备课组组织的各种业务活动。(3现代教育技术掌握水平(10分充分利用现代教育技术辅助教学,能够熟练地使用学校现有的现代化教学器 材。学校对教师使用现代教育技术的情况作好记录,按教师使用次数的多少和熟练 程度分档计分。(四教育教学效果(300分,以40-48人为准,每超或少1人加或减1个百分点1.德育工作(在班主任考核方案中记分所有班级任课教师都是德育工作的主体,既教书又育人;把德育工作渗透到日 常管理和教育教学中;有健康的兴趣爱好和良好的行为习惯,班风正、学风浓,无 违法犯罪现象。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁