(一)导入jar包
将第1,2个jar包导入libs目录下,同时,不要忘记导入数据库的驱动jar包(第三个)
(二)导入配置文件
代码:
<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
<default-config>
<!-- com.mysql.cj.jdbc.Driver -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db2?serverTimezone=GMT%2B8&useSSL=false</property>
<property name="user">root</property>
<property name="password">root</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:3306/db2?serverTimezone=GMT%2B8&useSSL=false</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
注:
需要注意的是,我的mysql没有修改时区,所以需要在URL中加入
?serverTimezone=GMT%2B8
同时由于版本问题,所以还需要加入
useSSL=false
,可以根据自己需要适当增删。
另外,在xml文件中& 用
&
来写。
(三)创建数据库连接池对象
DataSource ds = new ComboPooledDataSource();
(四)获取连接对象
Connection connection = ds.getConnection();
(五)查看结果
System.out.println(connection);
完整代码:
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class demo01c3p0 {
public static void main(String[] args) throws SQLException {
//创建数据库连接池对象
DataSource ds = new ComboPooledDataSource();
//获取连接对象
Connection connection = ds.getConnection();
//打印
System.out.println(connection);
}
}
结果显示:
测试二:
对应配置文件中的内容
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class demo02c3p0 {
public static void main(String[] args) throws SQLException {
//获取DataSource
DataSource ds = new ComboPooledDataSource();//此处什么都不传,是使用的默认配置
//如果传入名字,使用的是配置文件中对应名字的文件
for (int i = 1; i <= 11; i++) {//10个就会报错
Connection connection = ds.getConnection();
System.out.println(i+":"+connection);
if (i==5){
connection.close();
}
}
}
/*
* 5:com.mchange.v2.c3p0.impl.NewProxyConnection@7ea9e1e2 [wrapping: com.mysql.cj.jdbc.ConnectionImpl@24fcf36f]
* 6:com.mchange.v2.c3p0.impl.NewProxyConnection@2b48a640 [wrapping: com.mysql.cj.jdbc.ConnectionImpl@24fcf36f]
* 可见 close() 是归还
*
* */
}
版权声明:本文为shaxu123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。