C3P0

简介: 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

<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>

<!--

C3P0的缺省(默认)配置,

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

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

-->

<default-config>

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

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

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

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

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

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

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

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

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

</default-config>

<!--

C3P0的命名配置,

如果在代码中“ComboPooledDataSource ds = new

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

-->

<named-config name="MySQL">

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

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

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

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

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

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

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

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

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

</named-config>

</c3p0-config>

 

3、创建工具类

package com.kuang.datasource.utils;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import com.mchange.v2.c3p0.ComboPooledDataSource;

//数据库连接工具类

public class JdbcUtils_C3P0 {

   private static ComboPooledDataSource ds = 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 = new ComboPooledDataSource("MySQL");//使用C3P0的命名配置来创建数据源

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

       }catch (Exception e) {

           throw new ExceptionInInitializerError(e);

       }

   }

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

   public static Connection getConnection() throws SQLException{

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

       return ds.getConnection();

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

   }

   //释放资源

   public static void release(Connection conn,Statement st,ResultSet rs){

       if(rs!=null){

           try{

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

               rs.close();

           }catch (Exception e) {

               e.printStackTrace();

           }

           rs = null;

       }

       if(st!=null){

           try{

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

               st.close();

           }catch (Exception e) {

               e.printStackTrace();

           }

       }

       if(conn!=null){

           try{

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

               conn.close();

           }catch (Exception e) {

               e.printStackTrace();

           }

       }

   }

}

 

测试

package com.kuang.datasource;

import com.kuang.datasource.utils.JdbcUtils_C3P0;

import com.kuang.datasource.utils.JdbcUtils_DBCP;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Date;

public class C3P0Test {

   public static void main(String[] args) {

       Connection conn = null;

       PreparedStatement st = null;

       ResultSet rs = null;

       try{

           //获取数据库连接

           conn = JdbcUtils_C3P0.getConnection();

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

           String sql = "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, new java.sql.Date(new

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

           int i = st.executeUpdate();

           if (i>0){

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

           }

       }catch (Exception e) {

           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
相关文章
|
9月前
|
XML 关系型数据库 MySQL
c3p0 连接的配置文件使用 | 学习笔记
快速学习 c3p0 连接的配置文件使用.
219 0
c3p0 连接的配置文件使用 | 学习笔记
|
10月前
|
XML IDE Java
Idea访问servlet404问题(java学习日志)
Idea访问servlet404问题(java学习日志)
Idea访问servlet404问题(java学习日志)
|
10月前
|
XML druid Java
C3P0连接池的基本配置与使用
C3P0连接池的基本配置与使用
384 0
C3P0连接池的基本配置与使用
|
10月前
|
存储 Java Android开发
Android插件化动态加载apk
支付宝作为一个宿主apk提前将要集成的apk作为一个插件(plugin)下载到本地,然后当使用该plugin(apk)的时候再去加载对应plugin(apk)的资源文件以及对应的native页面。就是不去安装plugin(apk)就可以直接运行该plugin(apk)中的页面。
454 0
|
10月前
|
Java
Java泛型02:自定义泛型类、泛型方法
Java泛型02:自定义泛型类、泛型方法
311 0
|
Java 应用服务中间件
idea文件右键创建New没有Create New Servlet的解决办法
idea文件右键创建New没有Create New Servlet的解决办法
idea文件右键创建New没有Create New Servlet的解决办法
|
人工智能 自然语言处理 搜索推荐
全面升级!揭秘阿里云智能Logo设计的AI黑科技
免费体验!阿里云智能logo设计一直致力于用AI技术,帮助更多有设计需求的朋友能“多快好省”地做logo,让“设计logo”这件有门槛的事情,通过智能工具能轻松打造。满意再付款,首单仅需9.9元。
2619 0
全面升级!揭秘阿里云智能Logo设计的AI黑科技
|
应用服务中间件
idea控制台乱码(tomcat日志乱码)的解决办法
idea控制台乱码(tomcat日志乱码)的解决办法
idea控制台乱码(tomcat日志乱码)的解决办法
|
计算机视觉 Python
图像增强、锐化,利用 Python-OpenCV 来实现 4 种方法!
图像增强目的使得模糊图片变得更加清晰、图片模糊的原因是因为像素灰度差值变化不大,图片各区域产生视觉效果似乎都是一样的, 没有较为突出的地方,看起来不清晰的感觉 解决这个问题的最直接简单办法,放大像素灰度值差值、使图像中的细节更加清晰。
图像增强、锐化,利用 Python-OpenCV 来实现 4 种方法!
|
SQL 监控 druid
SpringBoot整合Druid配置数据源监控
我们在进行数据访问声明模板和repository之前都需要配置数据源用来连接数据库。数据源就是连接到数据库的一条路径,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接。
310 0
SpringBoot整合Druid配置数据源监控
推荐文章
更多