网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java对象持久化技术之Hibernate入.
.Java传递对象给期望原始类型参数.
.对Java多线程的一些总结.
.J2EE中使用EntityBean和JDO的优缺.
.彻底学习Java语言中的覆盖和重载.
.java读取操作系统环境变量.
.Java 面试中的陷阱[转载].
.Web框架比较:Struts、Spring MV.
.类的基本概念.
.银行取款机Cash系统源程序.
.BioJava–开源的生物信息学基础库.
.通过三种方式对Struts框架进行扩.
.用J2SE 1.4进行Internet安全编程.
.J2SE的30个基本概念.
.java 应用程序的发布.
.Java编程实现列表框元素动态变化.
.谨慎使用单精度/双精度这两数值类.
.使用AdminScripts脚本创建虚拟目.
.MAX_VALUE 属性.
.Web 服务代理组件创建 JSF Web 服.

关闭和释放 JDBC 资源

发表日期:2008-1-5



  关闭和释放 JDBC 资源
  
  为了确保 JDBC 资源不在出现异常或错误等情况下被不正常关闭,我们应该在使用完 JDBC 资源之后关闭且释放它们。JDBC 连接池提供了 JDBC 连接定义和数目有限的连接,假如数量不够,就需要长时间的等待。不正常关闭 JDBC 连接会导致等待回收无效的 JDBC 连接。只有正常的关闭和释放 JDBC 连接,JDBC 资源才可以被快速的重用使性能得到改善。
  
  建议
  
  失败的关闭和释放 JDBC 连接可能导致其它用户的连接经历长时间的等待。虽然超时的JDBC 连接会被 WebSphere Application Server 退回而被回收 ,但必须等待这种情形发生。
  
  使用完 JDBC 资源后关闭它们,还可以显式关闭 JDBC ResultSets。假如没有显式关闭语句,则在完成了相关语句之后会释放 ResultsSets。
  
  所以请确保您构建的代码在所有情况下,甚至在异常和错误条件下,都能关闭和释放 JDBC 资源。以下代码显示了 JDBC 资源的获得和使用都封装在“Try-Catch-Finally”结构中。其中,在 finally 子句中处理 JDBC 资源的关闭,使所有情况下关闭都将发生。
  
  关闭 JDBC Connection 和 PreparedStatement 的正确方式
  
  Connection conn = null;
  ResultSet rs = null;
  PreparedStatement pss = null;
  try
  {
  conn = dataSource.getConnection(USERID,PASSWord);
  pss = conn.prepareStatement("SELECT SAVESERIALZEDDATA
  FROM SESSION.PINGSESSION3DATA WHERE SESSIONKEY = ?");
  pss.setString(1,sessionKey);
  rs = pss.executeQuery();
  pss.close();
  conn.close();
  }
  catch (Throwable t)
  {
  // Insert Appropriate Error Handling Here
  }
  finally
  {
  // The finally clause is always executed - even in error
  // conditions PreparedStatements and Connections will always be closed
  try
  {
  if (pss != null)
  pss.close();
  }
  catch(Exception e) {}
  
  try
  {
  if (conn != null)
  conn.close();
  }
  catch (Exception e){}
  }
  }
  
  替代方法
  
  以下代码显示了关闭 JDBC 资源的错误方法。它们将在异常情况中失去正常关闭方式。这里假如抛出异常,应用程序将无法关闭 JDBC 连接。
  
  Connection conn = null;
  ResultSet rs = null;
  PreparedStatement pss = null;
  try
  {
  conn = dataSource.getConnection(USERID,PASSWORD);
  pss = conn.prepareStatement("SELECT SAVESERIALZEDDATA
  FROM SESSION.PINGSESSION3DATA WHERE SESSIONKEY = ?");
  pss.setString(1,sessionKey);
  rs = pss.executeQuery();
  pss.close();
  conn.close();
  }
  catch (Throwable t)
  {
  // If i reach this spot, I blew a JDBC Connection.
  }
上一篇:JDBC 解决方案 人气:921
下一篇:JDO 是什么 人气:758
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐