`
qjbagu
  • 浏览: 23530 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • wjl1174: String 不是基本的类型,所有他的变量就是一个对象,放在m ...
    静态字段问题
  • laojiang: 数据库设置缺省值或者类修改成Integer原因null是没办法 ...
    JDBC ORM
  • yin_bp: 补充说明一下连接池的配置     bboss persiste ...
    JDBC 批处理
  • yin_bp: 再贴点稍微有点点技术含量的,呵呵 看看开源j2ee 框架bbo ...
    JDBC 批处理
  • yin_bp: 贴点稍微有点点技术含量的,呵呵 有空看看开源bbossgrou ...
    JDBC 批处理

Statement关闭(转)

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

 

Java代码 
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;   
  }   
}  

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;
  }
} 


分享到:
评论

相关推荐

    怎样实现关闭connection时自动关闭Statement和ResultSet (下篇)

    这篇博客的下篇主要讨论了如何在关闭Connection时自动关闭Statement和ResultSet,以确保资源的有效释放,防止内存泄漏。以下是对这个主题的详细解释。 首先,我们需要理解数据库连接、Statement和ResultSet在JDBC中...

    statement_tracer_for_oracle

    在Oracle数据库管理中,"statement_tracer_for_oracle"是一个重要的工具,主要用于追踪SQL语句的执行情况,以便于在程序运行时收集信息并进行问题分析。这个工具可以帮助数据库管理员和开发人员深入理解数据库的运行...

    JDBC PrepareStatement 使用(附各种场景 demo)

    在使用JDBC和PrepareStatement时,别忘了关闭资源,例如ResultSet、Statement和Connection,以避免内存泄漏。可以使用try-with-resources语句来确保资源的正确关闭。 这个资源提供的示例代码将帮助开发者深入理解...

    JDBC(用PrepareStatement实现)

    **JDBC(用PrepareStatement实现)** Java Database Connectivity (JDBC) 是Java平台中的一个标准API,用于在Java应用程序和各种数据库之间建立桥梁。它允许Java开发者执行SQL语句,进行数据查询、更新和删除等操作。...

    语言的 using statement 与资源释放

    当使用 `using` 语句时,如果连接是从连接池获取的,则关闭连接后,该连接会返回到连接池而不是真正关闭。这样可以在后续请求中重复使用这个连接,从而避免频繁创建和销毁连接带来的开销。 #### 7. 与 Garbage ...

    IBRD Statement Of Loans 贷款数据集.7z

    4. **Loan Status**:贷款的状态,如批准、关闭、支付中等,这揭示了贷款周期的不同阶段和可能的还款风险。 5. **Loan Amount**:贷款金额,用于衡量IBRD的资金分配和各国的融资规模。 6. **Disbursed Amount**:已...

    描述Connection、Statement、ResultSet接口的作用

    标题和描述均聚焦于解释Java Database Connectivity (JDBC)中三个核心接口——`Connection`、`Statement`和`ResultSet`的作用。这三个接口是JDBC API的核心组成部分,它们共同协作,使得Java应用程序能够与各种关系...

    Pr_St_insert.rar_statement

    7. 关闭Statement和Connection。 对比PreparedStatement,上述过程中的步骤4将会有所不同,因为我们需要先创建预编译的SQL语句,然后逐个设置参数。例如: ```java String sql = "INSERT INTO table_name (column1...

    JDBC从入门到放弃02-JDBC的Statement数据库增加和删除

    在实际开发中,为了确保资源的有效管理,我们还需要在操作完成后关闭Statement和Connection,这通常通过try-with-resources语句实现: ```java try (Connection conn = DriverManager.getConnection(url, user, ...

    JDBC使用Statement修改数据库

    * 资源释放:使用完毕后需要关闭 Statement 对象和 Connection 对象以释放资源。 示例代码 以下是使用 Statement 对象修改数据库的示例代码: ```java public static void testStatement(String sqlStatement) { ...

    MySQL.rar_JDBC程序_statement_完整java开发中JDBC连接数据库代码

    在实际开发中,为了提高性能和防止SQL注入,通常会使用`PreparedStatement`而不是`Statement`,并且推荐使用数据库连接池来管理数据库连接。数据库连接池如HikariCP、C3P0或Apache DBCP等,能有效提升应用程序的效率...

    Jdbc_oracle_statement.rar_4 3 2 1

    在提供的压缩包文件`Jdbc_oracle_statement.java`中,可能包含了使用Statement执行SQL语句的示例代码。Statement接口用于执行静态SQL语句,例如查询、插入、更新和删除数据。你可以通过`Connection.createStatement...

    connection 和 preparedstatement 的关闭问题

    正确地选择`Statement`和`PreparedStatement`以及适时地关闭它们对于保证应用程序的性能和稳定性至关重要。理解它们之间的区别,并根据实际需求选择合适的方法,能够显著提升应用的质量。同时,合理管理`Connection`...

    sql语句转string

    6. **关闭资源**:操作完成后,记得关闭Statement、ResultSet和Connection,以释放数据库资源。 在提供的`sqltools.html`文件中,可能包含了关于如何使用特定工具或库进行此转换的更多信息,例如介绍如何使用某些...

    delphi问题常见解决

    1. **“statement expected but procedure found”**:这个错误提示表明在编译器尝试找到一个语句的地方,它却找到了一个过程(Procedure)的定义。这通常意味着你在某个过程或函数的定义中忘记了关闭的`end`关键字...

    java测试数据库连接关闭

    在Java中,我们可以使用try-with-resources语句,它会自动关闭在try块中声明的实现了AutoCloseable接口的对象,例如Connection、Statement和ResultSet。 下面是一个示例,展示了如何正确关闭数据库连接: ```java ...

    mysq_ jdbc连接与关闭封装代码

    此方法依次关闭`ResultSet`、`Statement`和`Connection`。 **2. 用于INSERT/UPDATE/DELETE操作的关闭方法** ```java public static void close(Statement stmt, Connection conn) { close(stmt); close(conn); } ...

    详解Java的JDBC中Statement与PreparedStatement对象

    关闭Connection时,会自动关闭与其关联的Statement,但为了确保资源回收,最好显式地调用`stmt.close()`。 PreparedStatement接口是Statement的增强版,它支持预编译的SQL语句,从而提高了性能和安全性。...

    JavaSE-原生jdbc-每日作业卷答案1

    6. **关闭资源**:在操作完成后,应按照“后开先关”的原则关闭`ResultSet`、`Statement`和`Connection`对象,释放数据库资源。 在给定的训练案例5中,展示了创建学生表的示例代码。首先,通过`Class.forName()`...

Global site tag (gtag.js) - Google Analytics