zoukankan      html  css  js  c++  java
  • 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次获取连接,所以程序报错

  • 相关阅读:
    set用法
    01分数规划
    unique && stl的全排列
    lower_bound() && upper_bound()
    spfa判负环
    倍增求LCA
    数据生成c++程序模板
    samba
    vsftp快速配置
    grub丢失的修复
  • 原文地址:https://www.cnblogs.com/bear7/p/12451819.html
Copyright © 2011-2022 走看看