C3P0

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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);

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

       }

   }

}


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
人工智能 算法 Java
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
|
域名解析 Java Maven
Maven 公共代理库
Maven 公共仓库提供了对 maven central、jcenter、google、spring 等常用的 Maven 仓库的镜像功能。用户可以通过页面浏览仓库内容、检索和下载制品。在构建时使用 Maven 个公共仓库地址下载制品速度更快,更稳定。
51253 1
Maven 公共代理库
|
5月前
|
数据采集 网络协议 物联网
C# | 上位机开发新手指南(一)概述
C#,是微软主推的编程语言。它在工业控制、自动化、物联网等领域应用非常广泛。由于国内在工业控制领域技术发展路径的原因,早期的自动化控制面板由Window环境提供,大量的MFC、VB6控制应用被部署在了工厂车间。在用户习惯和界面环境的双料加持下,给C#在工业领域的推广打下的坚实的基础。使用C#进行上位机开发已经是行业内的主流选择。 如果正在读文章的你准备或正在从事C#的上位机开发,本专栏将会是您在这条路线上的路标。欢迎一同打卡每一个节点。
1286 0
C# | 上位机开发新手指南(一)概述
|
12月前
|
安全 网络虚拟化 数据安全/隐私保护
Windows 10系统自带VPN客户端配置连接PPTP VPN服务器
Windows 10系统自带VPN客户端配置连接PPTP VPN服务器
2068 1
|
网络架构
eNSP 设备启动失败,错误代码:40 解决方案
eNSP 设备启动失败,错误代码:40 解决方案
1957 0
eNSP 设备启动失败,错误代码:40 解决方案
|
11月前
|
JavaScript Java 关系型数据库
Springboot+vue的大学生竞赛管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
Springboot+vue的大学生竞赛管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
|
XML druid Java
C3P0连接池的基本配置与使用
C3P0连接池的基本配置与使用
685 0
C3P0连接池的基本配置与使用
|
缓存
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
1309 0
|
网络虚拟化 网络架构
【eNSP 华为模拟器】单臂路由及操作步骤【图文】
【eNSP 华为模拟器】单臂路由及操作步骤【图文】
581 0
【eNSP 华为模拟器】单臂路由及操作步骤【图文】
|
前端开发 JavaScript Java
基于springboot的高校学科竞赛系统
该系统创作于2022年3月,包含详细数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,页面采用html,具有完整的业务逻辑,适合选题:学科竞赛、竞赛、校园竞赛等。
基于springboot的高校学科竞赛系统