连接池c3p0

C3P0:hibernate和spring使用,有自动回收空闲连接的功能.

使用步骤:
  1.导入jar包(c3p0-0.9.1.2.jar)
  2.使用api

a.硬编码(不推荐)
  new ComboPooledDataSource()

步骤:

  1.创建一个DataSourse项目

  2.新建一个包com.c3p0.hjh

  3.编写一个类C3p0Test01.java

  4.导包,lib下放入c3p0-0.9.2.1.jar和mchange-commons-java-0.2.3.4.jar;导完jar记得buildpath一下

代码执行前数据库数据:

代码执行后数据库数据:

JDBCUtil.java工具类源码:

package com.util.hjh;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
final static String driver = "com.mysql.jdbc.Driver";
final static String url = "jdbc:mysql://localhost/hejh?useUnicode=true&characterEncoding=UTF-8";
final static String user = "root";
final static String password = "root"; Connection conn = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null; /**获取连接*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} /**关闭资源closeResourse(conn,st)*/
public static void closeResourse(Connection conn,Statement st) {
try {
if(st!=null) {
st.close();
}else {
st = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**关闭资源closeResourse(conn,ps)*/
public static void closeResourse(Connection conn,PreparedStatement ps) {
try {
if(ps!=null) {
ps.close();
}else {
ps = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**关闭资源closeResourse(rs)*/
public static void closeResourse(ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

C3p0Test01.java源码:

package com.c3p0.hjh;

import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.util.hjh.JDBCUtil; /*
* a.硬编码(不推荐)
new ComboPooledDataSource()
* */
public class C3p0Test01 {
@Test
public void test() throws Exception {
//建立连接池
ComboPooledDataSource ds = new ComboPooledDataSource(); //设置基本参数
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost/jdbc");
ds.setUser("root");
ds.setPassword("root"); //操作数据库数据
Connection conn = ds.getConnection();
String sql = "update student set id =? where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 06);
ps.setInt(2, 10);
int i = ps.executeUpdate();
System.out.println("更新了"+i+"行数据"); //关闭资源
JDBCUtil.closeResourse(conn, ps);
}
}

b.配置文件
  配置文件的名称:c3p0.properties 或者 c3p0-config.xml
  配置文件的路径:src下

  编码只需要一句话
  new ComboPooledDataSource()//使用默认的配置
  new ComboPooledDataSource(String configName)//使用命名的配置 若配置的名字找不到,使用默认的配置

步骤:

  1.创建一个DataSourse项目

  2.新建一个包com.c3p0.hjh

  3.编写一个类C3p0Test2.java

  4.导包,lib下放入c3p0-0.9.2.1.jar和mchange-commons-java-0.2.3.4.jar;导完jar记得buildpath一下

  5.编写配置文件c3p0.properties

c3p0.properties文件内容:

c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost/jdbc
c3p0.user=root
c3p0.password=root

代码运行前数据库数据显示如下:

代码运行后数据库数据显示如下:

JDBCUtil.java工具类源码同上,略

C3p0Test2.java源码如下:

package com.c3p0.hjh;

import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.util.hjh.JDBCUtil; public class C3p0Test2 {
@Test
public void test() throws Exception {
//建立连接池
ComboPooledDataSource ds = new ComboPooledDataSource(); //操作数据库数据
Connection conn = ds.getConnection();
String sql = "update student set name =? where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,"haha");
ps.setInt(2, 3);
int i = ps.executeUpdate();
System.out.println("更新了"+i+"行数据"); //关闭资源
JDBCUtil.closeResourse(conn, ps);
}
}

使用c3p0-config.xml配置文件

代码执行之前的数据库数据:

代码执行之后数据库中的数据:

c3p0-config.xml配置文件内容:

<c3p0-config>
<!-- 默认配置,如果没有指定则使用这个配置 -->
<default-config>
<!-- 基本配置 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost/jdbc</property>
<property name="user">root</property>
<property name="password">root</property> <!--扩展配置-->
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config> <!-- 命名的配置 -->
<named-config name="XXX">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/xxxx</property>
<property name="user">root</property>
<property name="password">1234</property> <!-- 如果池中数据连接不够时一次增长多少个 -->
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">20</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">40</property>
<property name="maxStatements">20</property>
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>

C3p0Test03.java源码:

package com.c3p0.hjh;

import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.util.hjh.JDBCUtil; public class C3p0Test03 {
@Test
public void test() throws Exception {
//建立连接池
ComboPooledDataSource ds = new ComboPooledDataSource(); //操作数据库数据
Connection conn = ds.getConnection();
String sql = "insert into student values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 22);
ps.setString(2,"erya");
ps.setInt(3, 103);
int i = ps.executeUpdate();
System.out.println("插入了"+i+"行数据"); //关闭资源
JDBCUtil.closeResourse(conn, ps);
}
}

连接池c3p0的更多相关文章

  1. 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

    1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...

  2. JDBC连接池C3P0

    连接池 1)传统方式找DriverManager要连接.数目是有限的. 2)传统方式的close().并没有将Connection重用.仅仅是切断应用程序和数据库的桥梁,即无发送到SQL命令到数据库端 ...

  3. JDBC连接池-C3P0连接

    JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版      c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池  三种方 ...

  4. Java开源连接池c3p0的基本用法

    前言:其实c3p0只是一个实现了javax.sql 接口 DataSource的一个工具集,使用c3p0可以帮我们管理宝贵的Connection资源,无须我们去创建连接(免去每次配置数据库驱动,url ...

  5. 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试

    这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统 ...

  6. SpringBoot2 集成三种连接池 c3p0 hikari druid

    Hikari 1.首先集成 hikari springboot默认集成,只需要简单的配置即可 1.1 首先导入包 <dependency> <groupId>com.zaxxe ...

  7. jdbc连接池c3p0/dbcp强制连接超过设置时间后失效

    通常来说,各种技术实现的优化参数或者选项或者歪门邪道之所以能被想出来,通常是因为开发者或者实现的贡献者曾经遇到过导致此结果的问题,所以才出了对应的策略选项. 在有些情况下,比如存在客户端或者服务端连接 ...

  8. DBCP、c3p0、Druid三大连接池区别

    DBCP.c3p0.Druid三大连接池区别 一.连接池优势 如果一个项目中如果需要多个连接,如果一直获取连接,断开连接,这样比较浪费资源: 如果创建一个池,用池来管理Connection,这样就可以 ...

  9. 在jdbc基础上进阶一小步的C3p0 连接池(DBCP 不能读xml配置文件,已淘汰) 和DBUtils 中两个主要类QueryRunner和ResultSetHandler的使用

    首先看C3p0这个连接池,最大优势可以自动读取默认的配置文件 <?xml version="1.0" encoding="UTF-8"?> < ...

随机推荐

  1. Linux清除磁盘上的RAID信息(Disk /dev/mapper/ddf1_4c53492....)

    本文摘自https://www.cnblogs.com/blkqyd/p/7011104.html自学留存 原因: 这是因为硬盘带有raid信息,拿二手硬盘插入服务器时,系统会根据残留的信息自动发现r ...

  2. Jeecms之JSP访问action类

    因为Jeecms采用spring容器管理类,在web容器加载的时候类都已经实例化好了.我们可以通过在JSP中访问spring上下文的方式来调用action业务类例: ApplicationContex ...

  3. jeeCMS首页加载流程

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/gyshun/article/details/79669293 如果JEECMS部署完毕之后,在浏览器 ...

  4. phpStrom编辑器 通过 git 提交代码到 gitlab

    前提: 1.已经成功安装 git: 2.将 phpstrom 和 gitlab 连接起来.参考此文章 一.在 phpstrom 中打开需要推送的项目 二.将 ‘工作区’ 代码 添加到 ‘暂存区’ 三. ...

  5. Newtonsoft.json 二次引用出错解决办法

    一.一般在C# 项目中二次引用会出现如下错误: 解决办法:用编辑器打开项目下的文件(*.csproj),可以找到在这个文件中,Newtonsoft.Json的引用,删掉引用,然后在项目中重新引用就可以 ...

  6. 微信Web开发者工具报错:net::ERR_BLOCKED_BY_CLIENT

    今天在微信调试琳德的拼团,用了挺久之后,输入什么测试地址:发现页面空白,console提示身份验证网址错误,错误类型为:net::ERR_BLOCKED_BY_CLIENT, 尝试了好多次.以为是我的 ...

  7. 原生JS上传,实现预览并且兼容大部分IE

    // 前提条件: ie浏览器模式下,用户要允许ie默认的加载项:以下兼容ie的方法才会生效 // 图片上传预览 IE是用了滤镜 function previewImage(file) { var MA ...

  8. 没有ORM库的时候,通过PDO连接MySQL的方法

    $pdo = new PDO("mysql:host=localhost;dbname=eq","root","root"); $pdo-& ...

  9. Excel 表格中根据某一列的值从另一个xls文件的对应sheet中查找包含其中一列的内容(有点拗口)

    =VLOOKUP(C3&"*",INDIRECT("'[2008-2016年三地商务明细表.xls]"&L3&"年北京'!$D ...

  10. Mac OS 安装 独立的asio库

    先安装boost,见前文,然后上官网下载不带boost的asio,版本为:asio-1.12.2 cd到下载的库目录,配置 ./configure --with-boost="boost的安 ...