C3P0

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: C3P0

C3P0

C3p0

  • 是一个开源的JDBC连接池,目前使用它的开源项目是Hibernate、Spring

C3P0和dbcp区别:

  • dbcp没有自动回收空闲连接的功能
  • C3P0有自动回收空闲连接的功能

需要用到的jar包

c3p0-0.9.5.5、mchange-commons-java-0.2.19

1、导包

2、在类目录下加入C3P0的配置文件:c3p0-config.xml

<?xmlversion="1.0" encoding="UTF-8"?>

<c3p0-config>

<!--

C3P0的缺省(默认)配置,

如果在代码中“ComboPooledDataSource ds = new ComboPooledDataSource();”这样写

就表示使用的是C3P0的缺省(默认)配置信息来创建数据源

-->

<default-config>

<propertyname="driverClass">com.mysql.jdbc.Driver</property>

<propertyname="jdbcUrl">jdbc:mysql://localhost:3306/jdbcStudy?

useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true</property>

<propertyname="user">root</property>

<propertyname="password">123456</property>

<propertyname="acquireIncrement">5</property>

<propertyname="initialPoolSize">10</property>

<propertyname="minPoolSize">5</property>

<propertyname="maxPoolSize">20</property>

</default-config>

<!--

C3P0的命名配置,

如果在代码中“ComboPooledDataSource ds = new

ComboPooledDataSource("MySQL");”这样写就表示使用的是name是MySQL的配置信息来创建数据

-->

<named-configname="MySQL">

<propertyname="driverClass">com.mysql.jdbc.Driver</property>

<propertyname="jdbcUrl">jdbc:mysql://localhost:3306/jdbcStudy?

useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true</property>

<propertyname="user">root</property>

<propertyname="password">123456</property>

<propertyname="acquireIncrement">5</property>

<propertyname="initialPoolSize">10</property>

<propertyname="minPoolSize">5</property>

<propertyname="maxPoolSize">20</property>

</named-config>

</c3p0-config>

 

3、创建工具类

packagecom.kuang.datasource.utils;

importjava.sql.Connection;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importcom.mchange.v2.c3p0.ComboPooledDataSource;

//数据库连接工具类

publicclassJdbcUtils_C3P0 {

   privatestaticComboPooledDataSourceds=null;

   //在静态代码块中创建数据库连接池

   static{

       try{

           //通过代码创建C3P0数据库连接池

           /*ds = new ComboPooledDataSource();

           ds.setDriverClass("com.mysql.jdbc.Driver");

           ds.setJdbcUrl("jdbc:mysql://localhost:3306/jdbcstudy");

           ds.setUser("root");

           ds.setPassword("123456");

           ds.setInitialPoolSize(10);

           ds.setMinPoolSize(5);

           ds.setMaxPoolSize(20);*/

           //通过读取C3P0的xml配置文件创建数据源,C3P0的xml配置文件c3p0-config.xml必须放在src目录下

           //ds = new ComboPooledDataSource();//使用C3P0的默认配置来创建数据源

           ds=newComboPooledDataSource("MySQL");//使用C3P0的命名配置来创建数据源

           ////////////////////////////////////////////

       }catch (Exceptione) {

           thrownewExceptionInInitializerError(e);

       }

   }

   //从数据源中获取数据库连接

   publicstaticConnectiongetConnection() throwsSQLException{

       //从数据源中获取数据库连接

       returnds.getConnection();

       /////////////////////////////////

   }

   //释放资源

   publicstaticvoidrelease(Connectionconn,Statementst,ResultSetrs){

       if(rs!=null){

           try{

               //关闭存储查询结果的ResultSet对象

               rs.close();

           }catch (Exceptione) {

               e.printStackTrace();

           }

           rs=null;

       }

       if(st!=null){

           try{

               //关闭负责执行SQL命令的Statement对象

               st.close();

           }catch (Exceptione) {

               e.printStackTrace();

           }

       }

       if(conn!=null){

           try{

               //将Connection连接对象还给数据库连接池

               conn.close();

           }catch (Exceptione) {

               e.printStackTrace();

           }

       }

   }

}

 

测试

packagecom.kuang.datasource;

importcom.kuang.datasource.utils.JdbcUtils_C3P0;

importcom.kuang.datasource.utils.JdbcUtils_DBCP;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.util.Date;

publicclassC3P0Test {

   publicstaticvoidmain(String[] args) {

       Connectionconn=null;

       PreparedStatementst=null;

       ResultSetrs=null;

       try{

           //获取数据库连接

           conn=JdbcUtils_C3P0.getConnection();

           ///////////////////////////////

           Stringsql="insert into users(id,name,password,email,birthday)

           values(?,?,?,?,?)";

           st=conn.prepareStatement(sql);

           st.setInt(1, 6);//id是int类型的

           st.setString(2, "kuangshen");//name是varchar(字符串类型)

           st.setString(3, "123");//password是varchar(字符串类型)

           st.setString(4, "24736743@qq.com");//email是varchar(字符串类型)

           st.setDate(5, newjava.sql.Date(new

           Date().getTime()));//birthday是date类型

           inti=st.executeUpdate();

           if (i>0){

               System.out.println("插入成功");

           }

       }catch (Exceptione) {

           e.printStackTrace();

       }finally{

           //释放资源

           JdbcUtils_C3P0.release(conn, st, rs);

           ////////////////////////

       }

   }

}


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 Java Nacos
如何在Spring Cloud项目中集成Seata,实现分布式事务的管理和控制?
如何在Spring Cloud项目中集成Seata,实现分布式事务的管理和控制?
122 0
如何在Spring Cloud项目中集成Seata,实现分布式事务的管理和控制?
|
XML druid Java
C3P0连接池的基本配置与使用
C3P0连接池的基本配置与使用
504 0
C3P0连接池的基本配置与使用
|
Java 测试技术
剑指offer第二版Java代码,参考对应的LeetCode题目
剑指offer第二版Java代码,参考对应的LeetCode题目
|
存储 算法 机器人
剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)
剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)
312 0
剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)
|
10月前
|
缓存
Centos8使用yum报错 Couldn‘t resolve host name for http://mirrorlist.centos.org/?releas
Centos8使用yum报错 Couldn‘t resolve host name for http://mirrorlist.centos.org/?releas
250 0
|
10月前
|
网络架构
eNSP 设备启动失败,错误代码:40 解决方案
eNSP 设备启动失败,错误代码:40 解决方案
1017 0
eNSP 设备启动失败,错误代码:40 解决方案
|
11月前
|
安全 网络协议 数据安全/隐私保护
利用 802.11 WI-FI 标准漏洞攻击 WPA1、WPA2 和 WPA3
利用 802.11 WI-FI 标准漏洞攻击 WPA1、WPA2 和 WPA3
|
数据格式 C++ Java
notepad++如何快速格式化代码
notepad++如何快速格式化代码
13264 0
|
Java Maven
Maven配置阿里云镜像与JDK编译版本
Maven配置阿里云镜像与JDK编译版本
6952 0
Maven配置阿里云镜像与JDK编译版本
|
Java
Java泛型02:自定义泛型类、泛型方法
Java泛型02:自定义泛型类、泛型方法
438 0