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();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)