C3P0

c3p0 是一个开源的JDBC连接池,它相对于DBCP和Druid来说有一个更方便的配置连接方式,就是自动读取配置文件。配置文件名:c3p0-config.xml,放置与src目录下。配置文件的demo如下:

<?xml version="1.0" encoding="UTF-8"?>
 <c3p0-config> 
    <!-- 默认读的配置文件 -->
     <default-config> 
         <property name="driverClass">com.mysql.jdbc.Driver</property> 
         <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/testjdbc?characterEncoding=utf-8</property> 
         <property name="user">root</property> 
         <property name="password">123</property> 
         <property name="minPoolSize">5</property> 
         <property name="initialPoolSize">5</property> 
     </default-config>
     
     <!-- 额外的,备用的数据库,比如oracle -->
     <named-config name="mydb"> 
         <property name="driverClass">com.mysql.jdbc.Driver</property> 
         <property name="jdbcUrl">jdbc:mysql://192.168.200.200:3306/mydb?characterEncoding=utf-8</property> 
         <property name="user">root</property> 
         <property name="password">root</property> 
         <property name="minPoolSize">5</property> 
         <property name="initialPoolSize">5</property> 
     </named-config>
</c3p0-config>

默认的数据库连接使用的是<default-config>标签里的,其余的<named-config>可以有多个,当需要连接其它的数据库时,不需要再重新编辑配置文件,直接选择其它的数据库即可。在如下的测试代码中,在创建数据库连接池对象的时候可以传入参数来进行选择ComboPooledDataSource cpds = new ComboPooledDataSource();,在空参的时候是选择默认的<default-config>数据库连接,传入<named-config>的名字就可以直接连接其它数据库。比如这里ComboPooledDataSource cpds = new ComboPooledDataSource("mydb");,那么连接的就是mydb这个数据库。

测试c3p0:

package com.aa.c3p0;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import utils.JDBCUtils;

public class C3p0Demo {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
            //创建数据库连接池对象
            ComboPooledDataSource cpds = new ComboPooledDataSource();
            /*
            //必选参数的设置
            cpds.setDriverClass("com.mysql.jdbc.Driver");//和Druid不同,Druid传的是一个对象dds.setDriver(new Driver())
            cpds.setJdbcUrl("jdbc:mysql:///testjdbc");
            cpds.setUser("root");
            cpds.setPassword("123");
            */
            //从数据库连接池中获取连接对象
            conn = cpds.getConnection();
            stat = conn.createStatement();
            String sql = "select * from users;";
            rs = stat.executeQuery(sql);
            while(rs.next()) {
                System.out.println(rs.getString("username") + "---" + rs.getString("password"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(conn, stat, rs);
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,079评论 19 139
  • C3P0数据库连接池 为什么使用连接池 假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接...
    hey_leex阅读 1,878评论 0 1
  • 原链接:JAVA连接池介绍-C3P0连接池|CloudWong 背景 ​ 初学JDBC技术来连接数据库时,每一...
    简Cloud阅读 11,006评论 1 8
  • 一.概述 Sun公司约定: 如果是连接池技术,需要实现一个接口! javax.sql.DataSource; 其他...
    Mr_欢先生阅读 1,157评论 0 13
  • 下午,妈妈带我去上学。到了学校,我就拿起作业来。拿好作业老师就来了。第一节是语文课,第二节是数学课,第三节是语文课...
    曾雨萱阅读 600评论 0 0