Java数据库连接池c3p0的基本使用

1、导入jar包

  • 从网上下载c3p0的jar包及其依赖包
    • c3p0-0.9.5.5.jar
    • mchange-commons-java-0.2.19.jar
  • 导入到工程中

2、DataSource的基本使用

  • DataSource是JDK定义的接口类,c3p0只是这个接口类的一个实现

  • c3p0的使用有两种方式:

    • 通过c3p0创建一个Connection对象后再设置属性;
    public static void main(String[] args) throws Exception {
        ComboPooledDataSource source = new ComboPooledDataSource();
        source.setDriverClass("com.mysql.jdbc.Driver");
        source.setJdbcUrl("jdbc:mysql://example.domain.com:3306/db");
        source.setUser("username");
        source.setPassword("password");
        Connection conn = source.getConnection();
        System.out.println(conn);
    }
    
    • 通过配置文件自动加载Connection对象的属性,c3p0.properties文件或c3p0-config.xml文件都可以,但文件名是固定的
    c3p0.driverClass=com.mysql.jdbc.Driver
    c3p0.jdbcUrl=jdbc:mysql://node.yusian.net:3306/db3?useSSL=false
    c3p0.user=root
    c3p0.password=Root@123
    c3p0.initialPoolSize=5
    c3p0.maxPoolSize=10
    c3p0.checkoutTimeout=3000
    
    <c3p0-config>
        <!--默认配置-->
        <default-config>
            <!-- JDBC基本配置 -->
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://node.yusian.net:3306/db3?useSSL=false</property>
            <property name="user">root</property>
            <property name="password">Root@123</property>
    
            <!-- 连接池的基本配置  -->
            <property name="initialPoolSize">5</property>
            <property name="maxPoolSize">10</property>
            <property name="checkoutTimeout">3000</property>
        </default-config>
        <!--  命名配置  -->
        <named-config name="other">
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://node.yusian.net:3306/db3?useSSL=false</property>
            <property name="user">root</property>
            <property name="password">Root@123</property>
    
            <property name="initialPoolSize">5</property>
            <property name="maxPoolSize">8</property>
            <property name="checkoutTimeout">1000</property>
        </named-config>
    </c3p0-config>
    
    public static void main(String[] args) throws Exception {
        DataSource ds = new ComboPooledDataSource();
        Connection conn = ds.getConnection();
        System.out.println(conn);
    }
    
  • 配置文件中连接池的最大连接数是10个,通过for循环来获取连接对象,当循环第11次时即会报错
    public static void main(String[] args) throws Exception {
      DataSource ds = new ComboPooledDataSource();
      for (int i = 0; i < 11; i++) {
          Connection conn = ds.getConnection();
          System.out.println(conn);
      }
    }
    

One thought on “Java数据库连接池c3p0的基本使用

  1. Pingback: Java数据库连接池Druid的基本使用 | 年年有"余"

Leave a Reply