C3P0连接池

一、导入jar包

在项目下边新建一个目录libs,然后把c3p0的两个jar包放在里边。然后选中两个jar包,右击>>add as library...

  

 

 二、添加配置文件

将配置文件:c3p0-config.xml复制到src目录下,打开配置文件并修改配置信息。

配置信息如下

复制代码
<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3307/test_db</property>
<property name="user">root</property>
<property name="password">root1234</property>

<!--初始化申请的连接数量-->
<property name="initialPoolSize">5</property>
<!--最大的连接数量-->
<property name="maxPoolSize">10</property>
<!--超时时间,单位是毫秒-->
<property name="checkoutTimeout">3000</property>
</default-config>

<named-config name="otherc3p0">
</named-config>
</c3p0-config>
复制代码

 各个参数说明:

initialPoolSize:连接池初始化时创建的连接数
maxPoolSize:连接池最大连接数,如果获得新连接时会使连接总数超过这个值则停止申请并报错。
checkoutTimeout:配置当连接池所有连接用完时应用程序getConnection的等待时间。为0则无限等待直至有其他连接释放或者创建新的连接,不为0则当时间到的时候如果仍没有获得连接,则会抛出SQLException。

 三、使用C3P0的默认连接池

在配置文件中可以配置多个连接池,<default-config></default-config>这个标签范围内的就是默认连接池的配置信息

1.在src下新建一个包cn.xj.datasource.c3p0,并在这个包下新建一个类c3p0_demo1

2.导入数据库驱动jar包

  

 

 

3.编写代码:在 c3p0_demo1类中编写代码

复制代码
package cn.xj.datasource.c3p0;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class c3p0_demo1 {
    public static void main(String[] args) throws SQLException {
        //1.创建数据库连接池对象,没有传参,使用的就是默认连接池
        DataSource ds = new ComboPooledDataSource();
        //2.获取连接对象
        Connection conn = ds.getConnection();
        //3.打印连接对象
        System.out.println(conn);
    }
}
复制代码

 

 

 

四、使用指定名称的C3P0连接池

配置文件如下:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
<default-config>
  <property name="driverClass">com.mysql.jdbc.Driver</property>
  <property name="jdbcUrl">jdbc:mysql://localhost:3307/test_db</property>
  <property name="user">root</property>
  <property name="password">root1234</property>

  <!--初始化申请的连接数量-->
  <property name="initialPoolSize">5</property>
  <!--最大的连接数量-->
  <property name="maxPoolSize">10</property>
  <!--超时时间,单位是毫秒-->
  <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:3307/test_db</property>
  <property name="user">root</property>
  <property name="password">root1234</property>

  <property name="initialPoolSize">5</property>
  <property name="maxPoolSize">8</property>
  <property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
复制代码

 

 新建一个类c3p0_demo2代码如下:

复制代码
package cn.xj.datasource.c3p0;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class c3p0_demo2 {
    public static void main(String[] args) throws SQLException {
        testNamedConfig();
    }

    public static void testNamedConfig() throws SQLException {
        //1.创建数据库连接池对象,使用指定名称的连接池
        DataSource ds = new ComboPooledDataSource("otherc3p0");
        for (int i = 1 ; i<= 10 ; i++){
            Connection conn = ds.getConnection();
            System.out.println(i+":"+conn);
        }
    }
}
复制代码

 运行上边这个类,等待一秒后程序报错,说明我们使用的是otherc3p0这个连接池,因为otherc3p0这个连接池的最大连接数是8,而for循环执行了10次获取连接,所以程序报错

posted @   白熊啊  阅读(198)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示