java jdbc数据库连接池总结

合集下载

jdbc连接池默认值

jdbc连接池默认值

jdbc连接池默认值JDBC(Java Database Connectivity)连接池是用于管理数据库连接的一种技术。

它允许应用程序从连接池中获取数据库连接,使用完毕后将连接返回给连接池,以便其他应用程序可以继续使用。

在使用JDBC连接池时,了解默认配置值对于进行合理的配置至关重要。

一、JDBC连接池概述JDBC连接池是运行在服务器上的一个数据库连接池,它维护着多个数据库连接。

应用程序可以通过请求从连接池中获取一个可用的连接,并在使用完毕后将连接返回给连接池。

连接池可以有效地管理数据库连接,减少因频繁创建和关闭连接所带来的性能损耗。

二、默认连接池配置参数在JDBC连接池的配置中,有一些默认的参数值。

下面是一些常见的默认连接池配置参数:1. 最小空闲连接数(Min Idle Connections):默认值为0。

指定连接池中最小空闲连接的数量。

即使没有正在使用的连接,连接池也会保持该数量的空闲连接。

2. 最大活动连接数(Max Active Connections):默认值为8。

指定连接池中最大的活动连接数。

当请求连接时,如果连接池中所有连接都在使用中,连接池将等待,直到有连接返回。

3. 最大等待时间(Max Wait Time):默认值为-1。

指定从连接池中获取连接的最大等待时间。

当连接池中所有连接都在使用中且达到最大活动连接数时,如果超过最大等待时间仍无法获取连接,将抛出异常。

4. 连接有效性验证查询(Validation Query):默认值为null。

指定用于验证连接是否有效的SQL查询语句。

连接池会定期执行该查询语句,如果查询失败或返回的结果不符合要求,连接将被标记为无效并从连接池中移除。

5. 连接超时时间(Connection Timeout):默认值为-1。

指定从连接池获取连接的最大等待时间。

当连接池中无可用连接且达到最大等待时间时,将抛出异常。

三、自定义连接池配置尽管有默认的连接池配置参数,但根据实际需求,我们可以自定义连接池的配置。

Java中的JDBC数据库操作技巧

Java中的JDBC数据库操作技巧

Java中的JDBC数据库操作技巧一、JDBC简介JDBC全称为Java Database Connectivity,是Java的一个标准API,用于与各种关系型数据库进行连接、查询、更新等操作。

JDBC提供了一套基于SQL的编程接口,能够让Java程序无需了解底层数据库的细节即可进行数据库操作。

二、JDBC驱动类型JDBC驱动是一个程序模块,用于实现JDBC的API并与具体的数据库进行通信。

JDBC驱动可以分为四种类型:1、JDBC-ODBC桥接式驱动:使用ODBC驱动访问数据库。

这种驱动依赖于底层操作系统的ODBC机制,因此只能在Windows系统中使用。

2、本地式驱动:这种驱动实现了JDBC的API,并且直接与数据库交互。

由于直接调用数据库的API,因此效率要比桥接式驱动高。

3、网络式驱动:这种驱动通过网络协议与数据库进行通信。

大多数商用数据库都支持这种驱动,因此可以跨平台使用。

4、纯Java式驱动:这种驱动完全由Java实现,并且直接与数据库进行通信。

由于没有依赖于底层操作系统的机制,因此可以跨平台使用。

三、JDBC连接数据库JDBC连接数据库通常分为以下步骤:1、加载JDBC驱动在使用JDBC之前,必须先加载相应的JDBC驱动类。

可以通过Class.forName()方法来加载驱动,该方法的参数是完整的类名。

2、连接数据库连接数据库需要的参数通常包括数据库的URL、用户名和密码等。

可以使用DriverManager.getConnection()方法来建立连接,该方法的参数是一个包含数据库连接信息的字符串。

3、关闭连接在使用完连接后,必须调用Connection.close()方法来关闭连接,以便释放资源。

四、JDBC执行SQL语句JDBC可以执行各种类型的SQL语句,包括查询语句、更新语句、存储过程等。

1、执行查询语句可以使用Statement或PreparedStatement对象来执行查询语句。

Java数据库连接池介绍(7)--HikariCP介绍

Java数据库连接池介绍(7)--HikariCP介绍

Java数据库连接池介绍(7)--HikariCP介绍HikariCP 是⼀个快速、简单、可靠的 JDBC 连接池,在性能上做了很多优化,是⽬前最快的数据库连接池;本⽂主要介绍 HikariCP 的基本使⽤,⽂中使⽤到的软件版本:Java 1.8.0_191、HikariCP 4.0.3、Spring Boot 2.3.12.RELEASE。

1、配置参数HikariCP 所有时间相关的参数单位都为 ms。

1.1、基本配置参数默认值描述dataSourceClassName none驱动⾥⾯数据源的类名称;不⽀持 XA数据源,各数据源对应的数据源类名可参见 ”2、数据源类名“jdbcUrl none连接 url;该参数与 dataSourceClassName 设置⼀个即可username none⽤户名password none密码1.2、常⽤配置参数默认值描述autoCommit true连接返回连接池时,是否⾃动提交事务connectionTimeout30000从连接池获取连接的最⼤超时时间idleTimeout60000空闲连接存活的最⼤时间,当空闲连接数>minimumIdle 且连接的空闲状态时间>idleTimeout 时,将把该连接从连接池中删除;只有当 minimumIdle < maximumPoolSize 时,该设置才⽣效;0 表⽰永不超时keepaliveTime 0保持空闲连接可⽤的检测频率;0 表⽰不检测maxLifetime1800000连接存活的最⼤时间;0 表⽰没有限制connectionTestQuery none连接检测的查询语句;如果驱动⽀持 JDBC 4,强烈建议不要设置此参数minimumIdle same asmaximumPoolSize最⼩空闲连接数;为了提⾼性能,建议不要设置此参数,使连接池为固定⼤⼩maximumPoolSize10最⼤连接数metricRegistry none该参数仅通过编程配置或 IoC 容器可⽤;该参数⽤于指定池使⽤的 Codahale/DropwizardMetricRegistry实例来记录各种指标。

简述jdbc数据库连接的基本概念和主要功能。

简述jdbc数据库连接的基本概念和主要功能。

简述jdbc数据库连接的基本概念和主要功能。

JDBC(Java Database Connectivity)是Java语言中用于与关系型数据库进行连接和操作的API(Application Programming Interface)。

它为开发人员提供了一种标准的方式来访问和操作数据库,无论使用的是哪种数据库系统。

JDBC库包含了一组用于与数据库进行交互的接口和类。

通过这些接口和类,开发人员可以执行各种数据库操作,如连接数据库、执行SQL语句、事务处理等。

JDBC的基本概念包括以下几个方面:1. 数据库驱动程序(Database Driver):数据库驱动程序是一个软件模块,用于与特定的数据库系统进行通信。

它提供了一个实现JDBC 接口的具体实现,使得Java应用程序可以通过JDBC与数据库进行交互。

2. 数据源(Data Source):数据源是数据库连接的核心概念。

它是一个用于获取数据库连接的对象,可以通过数据源来获得数据库连接,然后执行SQL语句和其他数据库操作。

3. 连接(Connection):连接是通过JDBC与数据库之间的通信通道。

通过连接,Java应用程序可以与数据库建立连接,然后执行各种数据库操作。

4. 语句(Statement):语句是执行SQL语句的对象。

开发人员可以创建不同类型的语句对象,如普通语句(Statement)、预处理语句(PreparedStatement)和调用存储过程的语句(CallableStatement)。

通过语句对象,开发人员可以执行SQL语句并获取执行结果。

5. 结果集(Result Set):结果集是执行查询语句后返回的数据集合。

开发人员可以通过结果集对象获取查询结果的数据,并进行相应的处理。

JDBC的主要功能包括:1. 连接数据库:JDBC提供了与数据库建立连接的功能。

开发人员可以通过JDBC连接到数据库,以便进行数据库操作。

2. 执行SQL语句:JDBC可以执行各种SQL语句,如查询语句、更新语句、插入语句和删除语句等。

jdbc实训报告总结

jdbc实训报告总结

jdbc实训报告总结实训报告:JDBC(Java Database Connectivity)一、实训目标本次JDBC实训的目标是掌握Java语言如何通过JDBC API与关系型数据库进行交互,包括数据库的连接、查询、更新和断开连接等操作。

二、实训内容1. 了解JDBC的基本概念和用途。

2. 掌握JDBC驱动的安装与配置。

3. 掌握使用JDBC API进行数据库连接、查询、更新和断开连接的步骤。

4. 了解事务处理和批处理的概念及实现方法。

5. 掌握使用PreparedStatement和CallableStatement执行参数化查询和存储过程。

6. 了解JDBC的异常处理机制。

7. 掌握使用连接池管理数据库连接。

三、实训过程1. 在实验环境中安装和配置JDBC驱动。

2. 编写Java程序,实现数据库的连接、查询、更新和断开连接等操作。

3. 编写Java程序,实现事务处理和批处理。

4. 编写Java程序,使用PreparedStatement和CallableStatement执行参数化查询和存储过程。

5. 编写Java程序,实现异常处理。

6. 编写Java程序,使用连接池管理数据库连接。

四、实训总结通过本次实训,我深入了解了JDBC API的使用方法,掌握了Java语言与关系型数据库的交互方式。

在实训过程中,我学会了如何安装和配置JDBC驱动,如何使用JDBC API进行数据库连接、查询、更新和断开连接等操作,以及如何使用PreparedStatement和CallableStatement执行参数化查询和存储过程。

此外,我还了解了事务处理和批处理的概念及实现方法,以及JDBC的异常处理机制和连接池的使用方法。

这些知识和技能将对我今后的学习和工作产生积极的影响。

javaDatasource,数据库连接池

javaDatasource,数据库连接池

javaDatasource,数据库连接池⽬前有多重⽅式创建数据库连接池:JNDI,DBCP,C3P0等为什么需要连接池:使⽤java API DriverManager.getConnection()创建数据库连接,耗费内存和时间,实时性低;这种⽅式获取的connection需要⼿动关闭,不然会耗费⼤量的内存资源;对于频繁数据库操作,这种⽅式会造成性能低,尤其web应⽤数据库连接池的功能:负责创建、管理和分配数据库连接。

初始化数据库连接池时,会创建⼀定数量的数据库连接对象,并存放于数据库连接池中。

当请求连接数据库时,连接池会分配处于空闲状态的连接;数据库连接不被使⽤时,会被连接池回收,并设置为空闲状态;当连接空闲时间⼤于在初始化连接池设定的连接空闲时间,连接池释放该连接。

数据库连接池介绍:1、 JNDI2、 C3p03、 Apache的Jakarta DBCP4、 BoneCP其中,sping框架依赖的第三⽅使⽤了c3p0和dbcp两种⽅式;⽽bonecp号称是速度最快的数据库连接池。

JNDI⽅式创建实现的datasource 是真正实现了javax.sql.datasource;其他的三种⽅式都不是。

下⾯的列表,列出了⼏种⽅式的区别和不同:序号连接池名称依赖的jar包实现的datasource类备注1JNDI该数据源是由相应的web服务器(例如:tomcat,weblogic,websphere)负责初始化,创建,管理。

程序中不需要引⼊特别的jar包。

Javax.sql.datasource2C3P0c3p0-0.9.xxx.jar boPooledDataSource3DBCP commons-dbcp.jar,commons-pool.jarmons.dbcp.BasicDataSource4BoneCP bonecp-0.6.5.jar· google-collections-1.0.jar· slf4j-api-1.5.11.jar· slf4j-log4j12-1.5.11.jar·log4j-1.2.15.jarBoneCPDataSource备注:以上⼏种⽅式的数据库连接池的配置参数⼤同⼩异,略有差别;其参数的配置,既可以通过配置⽂件的⽅式配置,也可以通过硬编码的⽅式配置。

jdbc实验心得

jdbc实验心得

JDBC实验心得1. 介绍JDBC(Java Database Connectivity)是Java语言访问数据库的标准API。

通过JDBC,可以实现Java程序与各种关系型数据库的连接与交互。

在本次实验中,我深入学习了JDBC的使用方法,并通过实际操作,对JDBC在开发中的重要性有了更深刻的认识。

本文将从以下几个方面详细探讨我在实验中的心得体会:•JDBC的基本概念及原理•JDBC连接数据库的步骤•实际操作中遇到的问题及解决方法•JDBC在开发中的应用场景•实验的收获和不足之处2. JDBC的基本概念及原理2.1 JDBC的作用和优势JDBC是Java语言连接数据库的标准接口。

它使得Java程序能够通过标准的数据库操作语句与数据库进行交互,实现数据的存储和查询等功能。

JDBC的优势在于它能够提供跨平台的数据库访问能力,而不依赖于特定的数据库或操作系统。

2.2 JDBC的工作原理JDBC的工作原理可以分为以下几个步骤:1.加载数据库驱动程序:在使用JDBC之前,需要先加载相应数据库的驱动程序。

通过Class.forName()方法加载驱动类,这个类实现了Java SQL接口规范。

2.建立数据库连接:通过DriverManager类的getConnection()方法,传入数据库URL、用户名和密码等参数,来建立与数据库的连接。

连接成功后,将返回一个Connection对象。

3.创建执行SQL语句的Statement对象:通过Connection对象的createStatement()方法,可以创建一个用于执行SQL语句的Statement对象。

4.执行SQL语句:使用Statement对象的executeQuery()或executeUpdate()方法,可以执行查询或更新操作。

5.处理查询结果或更新结果:当执行查询语句后,可以使用ResultSet对象来遍历查询结果集;当执行更新语句后,可以使用int值表示受影响的行数。

JAVA使用JDBC连接数据库的几种方式

JAVA使用JDBC连接数据库的几种方式

JAVA使用JDBC连接数据库的几种方式JDBC(Java Database Connectivity)是Java编程语言用于连接数据库的一种标准API。

它提供了一种访问和操作不同类型数据库的方法。

在JDBC中,有几种不同的方式可以连接数据库。

下面是常见的几种方式以及它们的详细介绍。

1.使用JDBC驱动程序连接数据库2. DriverManager类连接数据库DriverManager是一个Java类,用于管理JDBC驱动程序。

它提供了一种简单的方法来注册和获取特定驱动程序的连接。

使用DriverManager 连接数据库时,首先需要加载驱动程序,并使用驱动程序的URL、用户名和密码创建连接。

然后可以使用这个连接执行SQL查询和更新操作。

3. DataSource接口连接数据库DataSource是一个接口,用于从数据库连接池获取连接。

连接池是一组预先创建的数据库连接,可以重复使用,从而提高应用程序的性能。

通过使用DataSource接口,可以通过配置连接池的方式来连接和管理数据库连接。

这种方式通常适用于大型应用程序或需要高并发连接的场景。

4. 使用JNDI(Java Naming and Directory Interface)连接数据库JNDI是Java提供的一种用于在Java应用程序中查找和访问命名服务的API。

通过使用JNDI,可以在应用程序中配置数据库连接信息,并使用统一的方式访问数据库。

这种方式通常适用于企业级应用程序,其中数据库连接信息可以统一管理。

5.使用第三方库连接数据库除了使用JDBC标准API连接数据库,还可以使用一些第三方库来简化数据库访问。

例如,Hibernate是一个流行的Java持久化框架,它提供了一种简单的方式来与数据库进行交互。

使用Hibernate,可以通过简单的配置来连接和管理数据库。

总结:上述是几种使用JDBC连接数据库的方式。

每种方式都有自己的优势和适用场景。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java jdbc数据库连接池总结1. 引言近年来,随着internet/intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机应用程序已从传统的桌面应用转到web应用。

基于b/s(browser/server)架构的3层开发模式逐渐取代c/s(client/server)架构的开发模式,成为开发企业级应用和电子商务普遍采用的技术。

在web应用开发的早期,主要使用的技术是cgi﹑asp﹑php等。

之后,sun公司推出了基于java语言的servlet+jsp+javabean 技术。

相比传统的开发技术,它具有跨平台﹑安全﹑有效﹑可移植等特性,这使其更便于使用和开发。

java应用程序访问数据库的基本原理在java语言中,jdbc(java database connection)是应用程序与数据库沟通的桥梁即java语言通过jdbc技术访问数据库。

jdbc是一种“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯java语言编写完整的数据库应用程序。

jdbc提供两种api,分别是面向开发人员的api和面向底层的jdbc驱动程序api,底层主要通过直接的jdbc驱动和jdbc-odbc桥驱动实现与数据库的连接。

一般来说,java应用程序访问数据库的过程(如图1所示)是:①装载数据库驱动程序;②通过jdbc建立数据库连接;③访问数据库,执行sql语句;④断开数据库连接。

图1 java数据库访问机制jdbc作为一种数据库访问技术,具有简单易用的优点。

但使用这种模式进行web应用程序开发,存在很多问题:首先,每一次web请求都要建立一次数据库连接。

建立连接是一个费时的活动,每次都得花费0.05s~1s的时间,而且系统还要分配内存资源。

这个时间对于一次或几次数据库操作,或许感觉不出系统有多大的开销。

可是对于现在的web应用,尤其是大型电子商务网站,同时有几百人甚至几千人在线是很正常的事。

在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃。

不是危言耸听,这就是制约某些电子商务网站发展的技术瓶颈问题。

其次,对于每一次数据库连接,使用完后都得断开。

否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。

还有,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。

数据库连接池(connection pool)的工作原理1、基本概念及原理由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。

我们知道,对于共享资源,有一个很著名的设计模式:资源池(resource pool)。

该模式正是为了解决资源的频繁分配﹑释放所造成的问题。

为解决上述问题,可以采用数据库连接池技术。

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。

预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。

我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。

更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。

连接池的基本工作原理见下图2。

图2 连接池的基本工作原理2、服务器自带的连接池jdbc的api中没有提供连接池的方法。

一些大型的web应用服务器如bea 的weblogic和ibm的websphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。

连接池关键问题分析1、并发问题为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。

这个问题相对比较好解决,因为java语言自身提供了对并发管理的支持,使用synchronized关键字即可确保线程是同步的。

使用方法为直接在类方法前面加上synchronized关键字,如:public synchronized connection getconnection()2、多数据库服务器和多用户对于大型的企业级应用,常常需要同时连接不同的数据库(如连接oracle 和sybase)。

如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址(< poolname.url> )﹑用户名(< er> )﹑密码(< poolname.password> )等信息。

如tx.url=192.168.1.123:5000/tx_it,er=cyl,tx.password=123456。

根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。

连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。

对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。

3、事务处理我们知道,事务具有原子性,此时要求对数据库的操作符合“all-all-nothing”原则即对于一组sql语句要么全做,要么全不做。

在java语言中,connection类本身提供了对事务的支持,可以通过设置connection 的autocommit属性为false 然后显式的调用commit或rollback方法来实现。

但要高效的进行connection复用,就必须提供相应的事务支持机制。

可采用每一个事务独占一个连接来实现,这种方法可以大大降低事务管理的复杂性。

4、连接池的分配与释放连接池的分配与释放,对系统的性能有很大的影响。

合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。

对于连接的管理可使用空闲池。

即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。

每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。

如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,如不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接);如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(maxconn)如果没有达到,就新建一个连接,如果已经达到,就等待一定的时间(timeout)。

如果在等待的时间内有连接被释放出来就可以把这个连接分配给等待的用户,如果等待时间超过预定时间timeout 则返回空值(null)。

系统对已经分配出去正在使用的连接只做计数,当使用完后再返还给空闲池。

对于空闲连接的状态,可开辟专门的线程定时检测,这样会花费一定的系统开销,但可以保证较快的响应速度。

也可采取不开辟专门线程,只是在分配前检测的方法。

5、连接池的配置与维护连接池中到底应该放置多少连接,才能使系统的性能最佳?系统可采取设置最小连接数(minconn)和最大连接数(maxconn)来控制连接池中的连接。

最小连接数是系统启动时连接池所创建的连接数。

如果创建过多,则系统启动就慢,但创建后系统的响应速度会很快;如果创建过少,则系统启动的很快,响应起来却慢。

这样,可以在开发时,设置较小的最小连接数,开发起来会快,而在系统实际使用时设置较大的,因为这样对访问客户来说速度会快些。

最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点。

如何确保连接池中的最小连接数呢?有动态和静态两种策略。

动态即每隔一定时间就对连接池进行检测,如果发现连接数量小于最小连接数,则补充相应数量的新连接以保证连接池的正常运转。

静态是发现空闲连接不够时再去检查。

连接池的实现1、连接池模型本文讨论的连接池包括一个连接池类(dbconnectionpool)和一个连接池管理类(dbconnetionpoolmanager)和一个配置文件操作类(parsedsconfig)。

连接池类是对某一数据库所有连接的“缓冲池”,主要实现以下功能:①从连接池获取或创建可用连接;②使用完毕之后,把连接返还给连接池;③在系统关闭前,断开所有连接并释放连接占用的系统资源;④还能够处理无效连接(原来登记为可用的连接,由于某种原因不再可用,如超时,通讯问题),并能够限制连接池中的连接总数不低于某个预定值和不超过某个预定值。

(5)当多数据库时且数据库是动态增加的话将会加到配置文件中。

连接池管理类是连接池类的外覆类(wrapper)符合单例模式,即系统中只能有一个连接池管理类的实例。

其主要用于对多个连接池对象的管理,具有以下功能:①装载并注册特定数据库的jdbc驱动程序;②根据属性文件给定的信息,创建连接池对象;③为方便管理多个连接池对象,为每一个连接池对象取一个名字,实现连接池名字与其实例之间的映射;④跟踪客户使用连接情况,以便需要是关闭连接释放资源。

连接池管理类的引入主要是为了方便对多个连接池的使用和管理,如系统需要连接不同的数据库,或连接相同的数据库但由于安全性问题,需要不同的用户使用不同的名称和密码。

2、连接池实现(经过本人改版可以适用多数据库类型的应用以及一种数据库类型多个数据库且数据库的数量可以动态增加的应用程序)1) dbconnectionpool.java 数据库连接池类2) dbconnectionmanager .java 数据库管理类3) dsconfigbean .java 单个数据库连接信息bean4) parsedsconfig.java 操作多(这个' 多' 包括不同的数据库和同一种数据库有多个数据库)数据配置文件xml5) ds.config.xml 数据库配置文件xml原代码如下:dbconnectionpool.java----------------------------------------------------------/数据库连接池类/package com.chunkyo.dbimport java.sql.connectionimport java.sql.drivermanagerimport java.sql.sqlexceptionimport java.util.arraylistimport java.util.iteratorimport java.util.timer/author chenyanlin/public class dbconnectionpool implements timerlistener {private connection con=nullprivate int inused=0 //使用的连接数private arraylist freeconnections = new arraylist() //容器,空闲连接 private int minconn //最小连接数private int maxconn //最大连接private string name //连接池名字private string password //密码private string url //数据库连接地址private string driver //驱动private string user //用户名public timer timer //定时//public dbconnectionpool() {// todo auto-generated constructor stub}/创建连接池param driverparam nameparam urlparam userparam passwordparam maxconn/public dbconnectionpool(string name string driver string url string user string pass word int maxconn){=namethis.driver=driverthis.url=urler=userthis.password=passwordthis.maxconn=maxconn}/用完,释放连接param con/public synchronized void freeconnection(connection con){this.freeconnections.add(con) //添加到空闲连接的末尾this.inused--}/timeout 根据timeout得到连接param timeoutreturn/public synchronized connection getconnection(long timeout) {connection con=nullif(this.freeconnections.size()> 0){con=(connection)this.freeconnections.get(0)if(con==null)con=getconnection(timeout) //继续获得连接 }else{con=newconnection() //新建连接}if(this.maxconn==0||this.maxconn< this.inused){con=null //达到最大连接数,暂时不能获得连接了。

相关文档
最新文档