JDBC-C3P0连接池
C3P0连接池的使用
1.准备JAR包
(1)c3p0-0.9.5.2.jar C3P0的核心包
(2)mchange-commons-java-0.2.15 C3P0依赖的工具包
2.导入项目
3.配置连接池的方法
3.1 通过数据源对象配置
//创建一个数据源对象
private static ComboPooledDataSource cpd = new ComboPooledDataSource();
static{
//1.配置驱动
try {
cpd.setDriverClass("com.mysql.cj.jdbc.Driver");
} catch (PropertyVetoException e) {
System.err.println("mysql驱动加载出错!");
e.printStackTrace();
}
//2.设置URL
cpd.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/huawei?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC");
//3.设置用户名
cpd.setUser("root");
//4.设置密码
cpd.setPassword("root123456");
//5.设置连接池的大小
cpd.setInitialPoolSize(20);
}
3.2 通过properties 配置文件配置C3P0的内容
配置文件示例:配置文件一定要叫 c3p0.properties
c3p0.driverClass=com.mysql.cj.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://127.0.0.1:3306/huawei?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
c3p0.user=root
c3p0.password=root123456
c3p0.initialPoolSize=20
c3p0.maxIdleTime=60
c3p0.maxPoolSize=30
配置文件防止的位置在SRC根目录下
++IDEA最好创建一个Resource目录存放配置文件
配置好后如何获取连接?
//保证配置正确只需创建一个数据源对象就可以使用了
private static ComboPooledDataSource cpd = new ComboPooledDataSource();
3.3 通过c3p0-config.xml 配置文件配置
将配置文件放在IDEA资源文件目录下即可(同properties文件)
c3p0-config.xml 配置示例
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置 -->
<default-config>
<!-- 驱动 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<!-- jdbcUrl -->
<!-- 1.将url使用转义标签<![CDATA[JDBCUrl]]>
2.将&换为&
-->
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/huawei?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">root123456</property>
</default-config>
</c3p0-config>
多数据源配置方式:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置 -->
<default-config>
<!-- 驱动 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<!-- jdbcUrl -->
<!-- 1.将url使用转义标签<![CDATA[JDBCUrl]]>
2.将&换为&
-->
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/huawei?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">root123456</property>
</default-config>
<!-- 数据源2 -->
<named-config name="data2">
<!-- 驱动 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/mysql?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">root123456</property>
</named-config>
</c3p0-config>
配置完成后只需创建数据源对象即可:
++注意:数据源对象创建调用无参构造器代表调用的是默认配置数据源(default-config)
//创建一个数据源对象,构造器如果是无参构造器,加载默认数据源配置
private static ComboPooledDataSource cpd = new ComboPooledDataSource();
++ 如果有参,则传入在xml配置中的<named-config name="data2">的name属性值加载对应数据源
private static ComboPooledDataSource cpd = new ComboPooledDataSource("data2");
4.获取连接
/**
* 从C3P0获取连接的方法
* @return
*/
public static Connection getCon() throws SQLException {
Connection con = cpd.getConnection();//调用数据源对象的getConnection方法
return con;
}
5.归还连接
在C3P0中,归还连接的方法就是调用Connection对象的close方法
/**
* 归还连接到C3P0
* @param con
*/
public static void returnCon(Connection con){
try {
con.close();
} catch (SQLException e) {
System.out.println("连接归还C3P0出错!");
e.printStackTrace();
}
}

浙公网安备 33010602011771号