乐趣区

关于驱动:JDBC中c3p0数据库连接池的实现

一、下载驱动

  • 下载链接:https://pan.baidu.com/s/1P0Kf…
    提取码:c3p0
  • 清单:

    • c3p0-0.9.5.2.jar
    • mchange-commons-java-0.2.11.jar
    • mchange-commons-java-0.2.15.jar
    • mysql-connector-java-8.0.11.jar

二、导入驱动

  1. 点击FileProject Structure
  2. 如图,导入 jar 包:

三、编写代码

实现形式一:set 办法

编写测试方法:

@Test
public void testGetConnection1() throws Exception {

    // 获取 C3P0 数据库连接池
    ComboPooledDataSource cpds = new ComboPooledDataSource();
    cpds.setDriverClass("com.mysql.jdbc.Driver");
    cpds.setJdbcUrl("jdbc:mysql://localhost:3306/ 数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");
    cpds.setUser("mysql 数据库账号");
    cpds.setPassword("mysql 数据库明码");

    // 设置初始数据库连接池数
    cpds.setInitialPoolSize(10);

    Connection conn = cpds.getConnection();
    System.out.println(conn);

    conn.close();}

请自行批改 数据库名 mysql 数据库账号mysql 数据库明码 处的内容。

运行该测试方法,若失去以下输入,则胜利:

如果不胜利,很可能是因为 setJdbcUrl 中没有退出时区的参数(见参考 1):serverTimezone=UTC

对于 mysql 8.0 以上的 mysql 数据库如果不胜利,能够尝试应用我在步骤一提供下载的驱动 jar 包,低版本的 c3p0 并不实用 mysql 8.0 以上。

实现形式二:配置 xml 文件

  1. 新建文件 c3p0-config.xml(文件名只能是这个)。
    对于 IDEA,请将 xml 文件放在resources 文件夹下(见参考 2)。
    对于 Eclipse,请将 xml 文件放在 src 文件夹下。
  2. 编写 xml 文件内容:

    <?xml version="1.0" encoding="UTF-8" ?>
    <c3p0-config>
     <named-config name="helloc3p0">
    
         <!-- 提供获取连贯的四个根本信息 -->
         <property name="driverClass">com.mysql.jdbc.Driver</property>
         <property name="jdbcUrl">jdbc:mysql://localhost:3306/ 数据库名?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC</property>
         <property name="user">mysql 数据库账号 </property>
         <property name="password">mysql 数据库明码 </property>
    
         <!-- 进行数据库连接池治理的根本信息 -->
         <property name="acquireIncrement">50</property>
         <property name="initialPoolSize">10</property>
         <property name="minPoolSize">10</property>
         <property name="maxPoolSize">100</property>
         <property name="maxStatements">50</property>
         <property name="maxStatementsPerConnection">2</property>
    
     </named-config>
    </c3p0-config>

    与形式一相似,请自行批改 数据库名 mysql 数据库账号mysql 数据库明码 处的内容。
    对于 xml 文件,对于 setJdbcUrl 中退出的参数,不应该应用 "&" 进行分隔,而应该应用 "&amp;" 进行分隔。

  3. 编写测试方法:

    @Test
    public void testGetConnection2() throws Exception {
    
        // 获取 C3P0 数据库连接池
        ComboPooledDataSource cpds = new ComboPooledDataSource("helloc3p0");
            // 此处与 xml 文件中 <named-config name="helloc3p0"> 内的 name 保持一致即可
    
        Connection conn = cpds.getConnection();
        System.out.println(conn);
        conn.close();}

    运行测试方法,失去形式一中的输入则胜利。

参考

  1. java.sql.SQLException: Connections could not be acquired from the underlying database!
  2. IDEA 中 web 我的项目 c3p0-config.xml 文件的配置及寄存目录
退出移动版