`
ryancorleone
  • 浏览: 4124 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

(转)JDBC必须要关闭连接

    博客分类:
  • 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数据库连接测试

    JDBC(Java Database Connectivity)是Java编程语言中用于规范应用程序如何访问数据库的应用程序接口,它提供了标准的API让Java程序员能够连接各种不同类型的数据库。本篇将深入讲解JDBC的基础知识,以及如何利用...

    jdbc连接池配置(优化连接速度)

    在IT行业中,数据库连接管理是应用系统性能优化的关键环节之一,而JDBC连接池就是解决这一问题的有效工具。本文将详细讲解JDBC连接池的工作原理、配置方法以及如何通过优化来提升连接速度。 JDBC(Java Database ...

    达梦数据库jdbc连接

    首先,我们要了解JDBC是什么。JDBC是Java语言的一个标准接口,它允许Java应用程序通过一套统一的API与各种类型的数据库进行通信。在达梦数据库中,我们同样可以通过JDBC驱动来建立Java程序与数据库之间的连接。 在...

    JDBC通过配置文件连接数据库

    - 关闭资源:最后,必须关闭ResultSet、Statement和Connection,以释放系统资源。 3. **使用框架简化JDBC** 在实际开发中,我们很少直接使用JDBC API,而是借助于ORM(Object-Relational Mapping)框架,如...

    jdbc连接大全 jdbc连接大全,很有用的,经自己精心总结!!

    **JDBC连接大全** 在Java编程中,JDBC(Java Database Connectivity)是Java语言与数据库交互的标准接口,它使得开发者可以使用Java代码来操作数据库。本篇内容将深入探讨JDBC连接的各个方面,旨在为你提供全面的...

    Java jdbc数据库连接池总结

    Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...

    JDBC不同数据库连接

    ### JDBC不同数据库连接详解 #### 一、引言 Java Database Connectivity (JDBC) 是 Java 平台上的标准 SQL 数据库访问技术。它提供了一种统一的方式来与各种关系型数据库进行交互,允许开发者通过标准的 API 来...

    jdbc连接不同数据库方法

    标题中的“jdbc连接不同数据库方法”指的是使用Java Database Connectivity (JDBC) API来与不同的数据库进行交互的方法。JDBC是Java平台中用于访问数据库的标准Java API,它允许开发者执行SQL语句并处理结果。 在...

    常用jdbc数据库连接jar包,数据库连接池jar包

    数据库连接池在初始化时会创建一定数量的数据库连接并保存起来,当应用程序需要连接时,可以从池中获取一个已存在的连接,而不是每次都去新建,用完后也不立即关闭,而是归还给连接池。这样可以显著减少建立和释放...

    jdbc与dbcp数据库连接

    5. **使用和关闭连接**:如同JDBC一样,执行SQL并处理结果,但在操作完成后,应通过`close()`方法将连接归还给连接池,而不是真的关闭连接。 **示例代码** 以下是一个简单的使用DBCP连接池的Java代码示例: ```...

    Oracle 客户端JDBC连接测试工具

    Oracle客户端JDBC连接测试工具是一种实用程序,它允许开发者和系统管理员通过Java Database Connectivity (JDBC)接口测试与Oracle数据库的连接。这个工具通常包含在Oracle客户端安装中,或者可以作为一个独立的JAR...

    jdbc连接数据库类

    ### JDBC连接数据库类知识点解析 #### 一、JDBC简介 Java Database Connectivity (JDBC) 是 Java 中一种用于执行 SQL 语句的标准 API,它由一组用 Java 编程语言编写的类和接口组成。JDBC 可为多种关系型数据库...

    jdbc连接各种数据库

    此外,获取数据库资源,如执行SQL语句、处理结果集等,需要使用`Statement`、`PreparedStatement`或`CallableStatement`对象,并且要注意关闭资源以防止内存泄漏。例如: ```java Statement stmt = conn....

    JDBC_ODBC连接

    在Java编程中,JDBC(Java Database Connectivity)是Oracle公司提供的一个标准接口,它使得Java程序可以连接到各种类型的数据库,包括Oracle。ODBC(Open Database Connectivity)则是一种数据库访问技术,它允许...

    jdbc连接数据库步骤

    例如,若要连接MySQL数据库,则需要加载MySQL的JDBC驱动类,代码如下: ```java Class.forName("com.mysql.jdbc.Driver"); ``` 这段代码会尝试加载指定的类,并创建该类的一个实例。如果指定的类不存在,或者找...

    jdbc 连接各种数据库

    标题中的“jdbc 连接各种数据库”指的是Java Database Connectivity(JDBC),它是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC是Java开发人员与各种...

    sqljdbc和测试jdbc连接类

    - 关闭资源:操作完成后,确保关闭所有打开的资源,如`rs.close()`, `stmt.close()`, 和`conn.close()`,以释放数据库连接和内存。 3. **测试JDBC连接类(test_jdbc.java)** `test_jdbc.java`可能包含一个名为`...

    Jdbc连接postgresql数据库(源码+jar包)

    要使用JDBC,我们需要引入对应的数据库驱动,对于PostgreSQL,我们需要PostgreSQL JDBC驱动,也就是jar包。 在"连接pgsql数据库"的源码中,通常会包含以下几个步骤: 1. **加载驱动**:这是连接数据库的第一步,...

    JDBC连接Access数据库

    8. **数据库资源释放**:数据库连接和执行对象在使用完毕后必须关闭,以避免资源泄露。`Connection.close()`方法用于关闭数据库连接,`Statement.close()`则关闭执行对象。同样,异常处理也应用于这些关闭操作。 9....

    4中JDBC连接方式理解

    JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何连接和操作数据库的标准接口。了解JDBC的四种连接方式对于开发人员来说至关重要,因为它直接影响到应用程序的性能、可移植性和易用性。 1. ...

Global site tag (gtag.js) - Google Analytics