使用IDEA开发工具
-
定义
存放数据库连接的集合(容器),容器被创建, 容器中就会申请一些连接对象
当用户来访问的数据库的时候 从容器中取连接对象,用户用完之后 归还 -
使用
1 导包 两个包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12
2 定义配置文件 名称 c3p0-config.xml 路径:将文件放到src目录下
3 创建核心对象 数据库连接池对象ComboPoolDataSorce
4 获取连接 getConnection
public static void main(String[] args) throws SQLException {
// 创建核心对象 数据库连接池对象ComboPoolDataSorce
DataSource ds = new ComboPooledDataSource();
// 获取连接 getConnection
Connection con = ds.getConnection();
System.out.println(con);
}
显示结果:
四月 03, 2019 4:11:03 下午 com.mchange.v2.log.MLog
信息: MLog clients using java 1.4+ standard logging.
四月 03, 2019 4:11:04 下午 com.mchange.v2.c3p0.C3P0Registry
信息: Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
四月 03, 2019 4:11:04 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 3000, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1hge16ya11qryocc1rpbmi5|10b8d03, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1hge16ya11qryocc1rpbmi5|10b8d03, idleConnectionTestPeriod -> 0, initialPoolSize -> 5, jdbcUrl -> jdbc:mysql://localhost:3306/user, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 10, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
com.mchange.v2.c3p0.impl.NewProxyConnection@12656d3 [wrapping: com.mysql.jdbc.JDBC4Connection@e5602]
我的xml文件
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/user</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<!-- 初始化申请的链接数量-->
<property name="initialPoolSize">5</property>
<!-- 最大的链接数量10-->
<property name="maxPoolSize">10</property>
<!-- 超时的时间是3秒-->
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day25</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
c3p0的配置
public class Demo2c3p0 {
public static void main(String[] args) throws SQLException {
//获得DataSource
DataSource ds = new ComboPooledDataSource();
//获得连接
for(int i=1;i<=11;i++){
Connection con = ds.getConnection();
System.out.println(i+" "+con);
if(i==5){
//归还连接池
con.close();
}
}
}
显示结果:
四月 03, 2019 4:15:16 下午 com.mchange.v2.log.MLog
信息: MLog clients using java 1.4+ standard logging.
四月 03, 2019 4:15:17 下午 com.mchange.v2.c3p0.C3P0Registry
信息: Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
四月 03, 2019 4:15:17 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 3000, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1hge16ya11qs437k1fapymk|157011e, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1hge16ya11qs437k1fapymk|157011e, idleConnectionTestPeriod -> 0, initialPoolSize -> 5, jdbcUrl -> jdbc:mysql://localhost:3306/user, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 10, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
1 com.mchange.v2.c3p0.impl.NewProxyConnection@800a9e [wrapping: com.mysql.jdbc.JDBC4Connection@392c27]
2 com.mchange.v2.c3p0.impl.NewProxyConnection@159be0d [wrapping: com.mysql.jdbc.JDBC4Connection@cc65ec]
3 com.mchange.v2.c3p0.impl.NewProxyConnection@e64e02 [wrapping: com.mysql.jdbc.JDBC4Connection@b66ca]
4 com.mchange.v2.c3p0.impl.NewProxyConnection@139ef5c [wrapping: com.mysql.jdbc.JDBC4Connection@91a171]
5 com.mchange.v2.c3p0.impl.NewProxyConnection@1cb2378 [wrapping: com.mysql.jdbc.JDBC4Connection@185ada3]
6 com.mchange.v2.c3p0.impl.NewProxyConnection@ebbd7d [wrapping: com.mysql.jdbc.JDBC4Connection@185ada3]
7 com.mchange.v2.c3p0.impl.NewProxyConnection@42c1ad [wrapping: com.mysql.jdbc.JDBC4Connection@b95774]
8 com.mchange.v2.c3p0.impl.NewProxyConnection@c7814f [wrapping: com.mysql.jdbc.JDBC4Connection@1fa6bfc]
9 com.mchange.v2.c3p0.impl.NewProxyConnection@67ab8f [wrapping: com.mysql.jdbc.JDBC4Connection@307811]
10 com.mchange.v2.c3p0.impl.NewProxyConnection@1845cb3 [wrapping: com.mysql.jdbc.JDBC4Connection@e21073]
11 com.mchange.v2.c3p0.impl.NewProxyConnection@126edd1 [wrapping: com.mysql.jdbc.JDBC4Connection@c76003]