`
kyo100900
  • 浏览: 639707 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

看看老外怎么正常关闭JDBC的多个Statement

阅读更多

以前用JDBC处理多个Statement的时候,总会因为异常而无法完美的解决Statement正常关闭,今天无意看到老外写了以下一段代码,和大家分享一下:

 

private PreparedStatement psStmt1;
private PreparedStatement psStmt2;
private PreparedStatement psStmt3;
 
........................
........................

/*  关闭代码  */
public void cleanup() throws SQLException {
  SQLException exception = null;
  if (psStmt1 != null) {
    try {
      psStmt1.close();
    } catch (SQLException e) {
      exception = e;
    } finally {
      psStmt1 = null;
    }
  }
 
  if (psStmt2 != null) {
    try {
      psStmt2.close();
    } catch (SQLException e) {
      if (exception != null) e.setNextException(exception);
      exception = e;
    } finally {
      psStmt2 = null;
    }
  }
 
  if (psStmt3 != null) {
    try {
      psStmt3.close();
    } catch (SQLException e) {
      if (exception != null) e.setNextException(exception);
      exception = e;
    } finally {
      psStmt3 = null;
    }
  }
 
  if (exception != null) {
    throw exception;
  }
}

 

 

7
9
分享到:
评论
12 楼 TenAclock 2011-11-15  
我是这样来释放
/**
	 * 合理的释放所有的用到的资源
	 */
	public static void free(){
		try {
			if(rs != null && !rs.isClosed()){
				rs.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			
			try {
				if(pstmt != null && !pstmt.isClosed()){
					pstmt.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			try {
				if(connection != null && !connection.isClosed()){
					connection.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
11 楼 cooldh 2009-05-25  
楼主说说 这样关闭有什么好处? 谢谢
10 楼 sinokaka 2008-05-20  
我估计楼主主要是赞赏这句话

“ if (exception != null) e.setNextException(exception);  ”
9 楼 bingshen01 2008-05-04  
是啊
说说看法嘛
不要只是去踩
8 楼 supttkl 2008-04-02  
何必呢?
如果你向关闭直接
finally{
   conn.close();
}
有空看看底层驱动怎么实现的。我用jtds驱动,到底层看了看,
如果该连接关闭,那么在关闭连接之前会关闭在此连接上打开的所有Statement,如果关闭Statement会关闭在此Statement上打开的所有ResultSet
7 楼 qmy 2008-03-24  
没看明白...啥意思?
6 楼 pig345 2008-02-25  
不怎么样。
5 楼 ndzl 2008-02-16  
老帖子真的是很棒啊。。。
受教了,多谢。。。
:D
4 楼 weiqingfei 2008-02-14  
看下这个老帖子
http://www.iteye.com/post/80802
3 楼 ndzl 2008-02-13  
这代码咋了?为啥被踩了三次?看不懂。。。
踩的人都是是高手吧,别把话说一半啊。。。说说哪不好嘛。。。
2 楼 ruicoder 2008-02-12  
难道,软件设计的真谛就是:最简章就是最好的 - -!!
1 楼 hax 2008-02-09  
这样的代码还有人顶?

相关推荐

    老外最想聊的100个英语口语话题.txt

    老外最想聊的100个英语口语话题.txt

    经典的老外excel模板

    1. "BusinessPlanner_Demo.xls":这个文件很可能是一个商业计划模板,它通常包含多个工作表,分别用于概述公司战略、市场分析、产品或服务详情、营销和销售策略、组织和管理结构、财务预测等内容。用户可以输入自己...

    2024华数杯C题老外游中国

    本次C题老外游中国的第一问简述就是要求通过给出的旅游数据集,建立数学模型计算出352个城市中所有35200个景点评分的最高分,以及获得这个最高评分的景点数量和城市列表。 设 是352个城市的集合, 是第 个...

    IOCP.zip_IOCP_iocp 老外_完成端口_完成端口 老外

    完成端口 网络模型 实现 程序 老外写的很好的一个程序

    一个老外写的HtmlEditor

    【标题】"一个老外写的HtmlEditor"是一个国外开发者创建的HTML编辑器,它提供了丰富的功能,便于用户创建和编辑HTML文档。这个编辑器可能是开源的或者免费供个人使用,旨在简化网页设计过程,提高开发效率。 【描述...

    老外写的一个flash时间类

    这个"老外写的一个flash时间类"旨在提供一个更精确的时间控制工具,以改善标准的ActionScript 3(AS3)Timer类可能存在的精度问题。下面我们将深入探讨这个时间类的相关知识点。 1. **ActionScript 3 Timer类**: ...

    老外编译的西门子源程序 很贵啊

    西门子作为全球知名的工业自动化和软件解决方案提供商,其产品广泛应用于制造业、能源、交通等多个领域。 西门子的软件产品如SIMATIC TIA Portal、SINUMERIK、PLC编程软件等,都涉及到源代码的编译,这些软件是工业...

    西门子PLC例程-一个老外的程序.zip

    西门子PLC例程-一个老外的程序

    数十个老外的美到极致的APP界面

    标题中的“数十个老外的美到极致的APP界面”暗示了这是一份关于优秀应用界面设计的资源集合。这些界面可能来自于国际上的设计师,展示了他们对于用户界面(UI)的创新和精湛技艺,尤其在视觉美学和用户体验方面。在...

    老外的程序(西门子).zip西门子PLC编程实例程序源码下载

    老外的程序(西门子).zip西门子PLC编程实例程序源码下载老外的程序(西门子).zip西门子PLC编程实例程序源码下载老外的程序(西门子).zip西门子PLC编程实例程序源码下载老外的程序(西门子).zip西门子PLC编程实例程序源码...

    Excel老外编写的超多函数

    Excel老外编写的超多函数,适合excel 高级用户 比较详细

    向老外作者要文献的一个常用的模板

    向老外作者要文献的一个常用的模板.doc

    很给力的IO按键扫描电路,老外的5个IO可以驱动25个按键

    接下来,尝试寻找更多可能的按键布局,如图四所示的20个按键排列,但由于对称性问题,实际上无法区分对称的按键。为了解决这个问题,可以引入单向导通元件——二极管。二极管的特性使得电流只能从一个方向流过,因此...

    老外图像配准的ppt - lecture03

    这在医学影像分析、遥感、计算机视觉等多个领域都有广泛应用。以下是对"老外图像配准的ppt - lecture03"中涉及知识点的详细解释: 首先,我们要了解**图像类型**。图像可以分为多种类型,如: 1. **医学图像**:...

    oracle ocp老外笔记

    Oracle 9i是Oracle数据库的一个重要版本,发布于2001年,它在8i的基础上进行了很多改进和增强。以下是一些Oracle 9i的关键知识点: 1. **数据库管理**:Oracle 9i引入了自动存储管理(Automatic Storage Management...

    32槽老外的图纸.pdf

    图纸的详细尺寸和部件说明表明这是一份专业的技术图纸,其中包含了天线装配的多个关键组件和具体尺寸参数。下面将具体分析文档中的各个知识点。 首先,文档中提及的“32槽”可能指的是天线的设计中具有的32个特定...

    老外用Concept编写控制4个MB_MSTR.rar

    总结来说,"老外用Concept编写控制4个MB_MSTR.rar"这个示例涵盖了施耐德PLC的网络配置、通信编程、控制逻辑设计以及故障处理等多个方面,为学习者提供了一个全面了解和实践Modicon MSTR控制的平台。通过深入学习和...

    一个老外总结的Modbus通讯资料

    Modbus最初的实现基于RS-232串行通信,但随着技术的发展,大多数现代Modbus系统选择RS-485作为物理层,因为RS-485支持更长的距离、更高的数据速率,并且支持真正的多滴网络,即多个设备可以在同一条线上双向通信。...

    老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载

    老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载老外写的焊接机器人程序.zip西门子PLC...

    老外牛逼A*寻路算法

    老外编写的PathFinder2D可能是一个2D寻路库,包含了A*算法和其他寻路算法的实现。这个库可能提供了图形化的效率对比,帮助开发者直观地了解不同算法在特定场景下的性能差异。这包括可能的性能指标,如搜索速度、内存...

Global site tag (gtag.js) - Google Analytics