所需架包:JDBC链接mysql数据库的驱动包(在mysql官网上有)、c3p0的架包c3p0-0.9.5.jar、mchange-commons-java-0.2.9.jar
在src下配置名字为c3p0-config.xml文件
文件内容为
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是一个c3p0数据库链接池的配置文件 -->
<c3p0-config>
<default-config>
<!--c3p0将建一张名为conn_Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么
属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试
使用。Default: null-->
<property name="automaticTestTable">con_test</property>
<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
<property name="checkoutTimeout">30000</property>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod">30</property>
<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize">10</property>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
<user-overrides user="test-user">
<property name="maxPoolSize">10</property>
<property name="minPoolSize">1</property>
<property name="maxStatements">0</property>
</user-overrides>
</default-config>
<!-- This app is massive! -->
<named-config name="intergalactoApp">
<!--用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">123456</property>
<!--mysql驱动类 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!--获取链接地址 -->
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/newcxpt</property>
<property name="acquireIncrement">50</property>
<property name="initialPoolSize">100</property>
<property name="minPoolSize">50</property>
<property name="maxPoolSize">1000</property>
<!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
<!-- he's important, but there's only one of him -->
<user-overrides user="master-of-the-universe">
<property name="acquireIncrement">1</property>
<property name="initialPoolSize">1</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">5</property>
<property name="maxStatementsPerConnection">50</property>
</user-overrides>
</named-config>
</c3p0-config>
数据库链接的工具类
/**
* JDBCTools.java 1.0 2015-10-22
* 维信科技版权所有
*/
package com.tit.edu.util;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* 类功能(作用)说明: 与数据库操作有关的类
* @author sunjianning
* @version 1.0
*/
public class JDBCTools {
private static DataSource dbsource = null;
static {
dbsource = new ComboPooledDataSource("intergalactoApp");
}//使用静态代码块初始化datasourse
/**
*
* 方法功能(作用)说明:利用C3p0获取数据库链接
* 数据库表: 无
* @return 数据库链接
* @throws SQLException
*/
public static Connection getConnection () throws SQLException{
return dbsource.getConnection();
}
}
数据库连接池的原理:
连接池基本的思想是在系统初始化的 时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用 户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控 制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况 等。