0 0

数据库链接到底在何时关闭3

我在写DAO的时候到底将数据库链接何时关闭比较好呢?是每次用完都关吗?这样不是很耗时间吗?若不关闭的话在多人访问时他们用的是同一个链接吗?这样会产生并发问题吗?
我这么写链接行吗?如果改进比较好呢?
public class GetPoolConnection {
	private static DataSource pool;
    static {
          try {
        	  Context env = new InitialContext();
        	  pool = (DataSource) env.lookup("java:comp/env/jdbc/DWPP");
              if(pool==null) 
                  logger.warn("'DBPool' is an unknown DataSource");
               } catch(NamingException ne) {
            	   logger.warn("'GetDataSource is Exception",ne);
          }
      }
    
    public static Connection getDWDVLP() {
        try {
			return pool.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
    }
}

public static List findMiddle() throws SQLException {
    Connection con = GetPoolConnection.getDWDVLP();
	String sql = "select distinct * from TABLE;
		ArrayList Mid_items = null;
		PreparedStatement stmt = con.prepareStatemen(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
		ResultSet rs = stmt.executeQuery(sql);
		Mid_items = new ArrayList();
		while (rs.next()) {
			DimCode Mid_item = new DimCode();
			Mid_item.setID(rs.getString("ID"));
			Mid_item.setname(rs.getString("NAME"));
			Mid_items.add(Mid_item);
		}
		closeCon(con,stmt,rs);
		return Mid_items;
	}
	private static void closeCon(Connection con,PreparedStatement stmt,ResultSet rs) {
		try {
			if (stmt != null)
				stmt.close();
			if (stmt != null)
				stmt.close();
			if (rs != null)
				rs.close();
			if (con != null)
				con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

2009年1月20日 14:04

4个答案 按时间排序 按投票排序

0 0

其实, 你关闭了连接, 并不是真的把连接关闭了, 只是告诉连接池, 可以让连接池回收了。 从连接池获得的连接只是被你使用的, 并不会被别人的THREAD使用。 因此你可以放心的使用。

另外, 请你看看连接池的实现机制, 比如 dbcp, c3p0, proxypool等等。 加强下自己的基础知识。

2009年1月20日 20:31
0 0

你用的是数据连接池.用完后就要关闭连接.这样这条连接才会被连接池收回供其它用户使用,而并没有真正的关闭.如果你用完没有关闭,那么连接池就不能收回你现在使用的连接,再有新的请求时,连接池只能新建连接直到你设定的最大连接数为止,一旦到了最大连接数,那么其它用户只能等有空闲的连接.所以基于连接在用完后应该立即释放.

2009年1月20日 16:53
0 0

放在Service吧. Service控制事务,用完后释放;

2009年1月20日 15:00
0 0

最好在一次功能操作完毕后关闭,建议在action开始时开启,ACTION结束和异常时关闭,这样就不是很频繁了

2009年1月20日 14:07

相关推荐

    初始化数据库链接信息

    在IT行业中,数据库链接信息的初始化是任何应用与数据库交互的基础步骤。这涉及到配置应用程序以正确连接到数据库服务器,获取并管理数据。本主题将详细探讨如何使用`common-configuration`、`slf4j`和`logback`组件...

    PHP数据库链接类

    【PHP数据库链接类】是PHP开发中一个重要的概念,它允许程序员通过编程方式与各种数据库进行交互,如MySQL、PostgreSQL、SQLite等。在PHP中,数据库连接类通常被用来封装数据库操作,提供统一的接口,使得代码更易于...

    数据库链接

    数据库链接是IT领域中一个基础且重要的概念,尤其在关系型数据库管理中,如MySQL。MySQL是一种广泛使用的开源关系数据库,因其高效、可靠且易于学习而受到开发者的喜爱。本教程将面向初学者,深入浅出地讲解如何进行...

    数据库链接数据库链接数据库链接

    在分布式系统、网络应用以及多用户环境下,数据库链接扮演着至关重要的角色。本文将深入探讨数据库链接的相关知识点,包括其原理、类型、实现方式以及在实际应用中的重要性。 一、数据库链接原理 数据库链接基于...

    php适用于各种数据库链接类.zip

    标题提到的"php适用于各种数据库链接类.zip"提供了一个通用的解决方案,允许开发者轻松地与多种类型的数据库进行交互,如MySQL、PostgreSQL、SQLite等。这个类库旨在简化数据库操作,提高代码的可复用性和可维护性。...

    ASP.NET数据库链接文件

    在本讨论中,我们将深入探讨ASP.NET数据库链接文件的重要性和其工作原理。 1. 数据库连接字符串: 在ASP.NET中,数据库链接文件的核心是数据库连接字符串,这是一个包含用于连接到特定数据库的所有必要信息的字符...

    数据库链接模板

    在IT行业中,数据库链接模板是实现Java应用程序与数据库交互的一种常用方法。这个主题涉及到Java的JDBC(Java Database Connectivity)API,它允许开发者编写能够连接、查询和操作各种数据库的代码。下面将详细阐述...

    JSP数据库链接、增删改实现

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它结合了Java编程...以上就是JSP数据库链接及增删改查的基本知识点,掌握了这些,你就可以在JSP项目中有效地操作数据库,构建功能丰富的Web应用。

    Mysql 数据库链接jar包

    MySQL数据库链接jar包是Java开发者在进行MySQL数据库操作时必不可少的工具。这个资源包含了MySQL官方提供的Java数据库连接器(JDBC)驱动,使得Java应用程序能够与MySQL数据库进行通信,执行SQL查询、更新数据库内容...

    数据库链接通用模块vb源程序

    数据库链接通用模块在VB(Visual Basic)编程中扮演着至关重要的角色,它是连接应用程序与数据库系统之间的桥梁。VB是一款流行的事件驱动编程环境,常用于开发Windows应用软件,而数据库链接模块则使得VB程序能够...

    poolman数据库链接池

    "Poolman数据库链接池"是一种高效管理数据库连接的工具,其主要目的是优化数据库操作的性能,减少系统资源的消耗,并提高应用程序的响应速度。在Java等编程语言中,数据库连接池是实现多线程环境下共享数据库连接的...

    JDBC 数据库链接数 据库链接操作实例

    本实例主要关注如何使用JDBC进行数据库链接操作,我们将深入探讨JDBC的核心概念、数据库连接步骤以及在实际应用中的注意事项。 首先,JDBC提供了四个核心接口,它们分别是DriverManager、Connection、Statement和...

    java对各种数据库的链接及用法个人笔记

    在Java编程语言中,连接和操作各种数据库是一项基础但至关重要的任务。这通常涉及到使用Java Database Connectivity (JDBC) API,这是一个Java标准,允许Java应用程序与各种关系型数据库进行交互。下面将详细介绍...

    ADO技术链接数据库

    本文将详细介绍如何使用ADO技术链接到Access数据库,并在MFC(Microsoft Foundation Classes)应用程序中,特别是在控件ListCtrl中,读取数据库中的数据。 首先,了解ADO的核心组件是必要的。它们包括: 1. **...

    LabVIEW与数据库的链接.pdf

    ### LabVIEW与SQL数据库链接的知识点 #### 1. LabVIEW软件概述 LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是美国国家仪器(National Instruments)公司推出的一款图形化编程软件。它主要...

    delphi 数据库链接池

    Delphi 数据库链接池,简单来说,就是一种管理数据库连接的技术,它允许应用程序重复使用已打开的数据库连接,而不是每次需要时都创建新的连接。这有助于减少网络延迟,降低系统资源消耗,并提升应用程序的响应速度...

    java链接mysql数据库

    Java链接mysql数据库代码,从链接到关闭,注释详细,一目了然

    链接数据库工具类

    5. **释放资源**:虽然连接在使用完毕后会自动归还给连接池,但为了防止内存泄漏,DBUtil可能会提供一个`close()`方法,用于在程序结束或不再需要数据库连接时,关闭整个连接池。 在实际应用中,使用DBUtil类可以极...

    VB.NET 与数据库的链接

    需要注意的是,为了确保数据一致性,通常需要在数据库操作前后处理异常,并在完成操作后关闭数据库连接。 总之,VB.NET与Access数据库的链接主要涉及OleDbConnection、OleDbCommand、OleDbDataAdapter和DataSet等类...

    JAVA链接数据库的通用方法类

    这个名为"JAVA链接数据库的通用方法类"的资源提供了一个通用的Java类,可以帮助开发者便捷地与各种数据库系统(如MySQL、Oracle等)建立连接。下面我们将深入探讨这个主题,了解如何在Java中实现数据库连接以及通用...

Global site tag (gtag.js) - Google Analytics