c3p0也是一个开源jdbc连接池,我们熟悉的Hibernate和Spring框架使用的都是该数据源。

这里获得数据源使用的方法是:ComboPooledDataSource

它提供的构造方法有:

ComboPooledDataSource()

ComboPooledDataSource(boolean autoregister)

ComboPooledDataSource(java.lang.String configName)

通过第三个构造方法读取配置文件,它的配置文件是一个xml文件,也可以是一个properties文件。

在c3po中的ComboPooledDataSource类提供了如下方法:

setDriverClass:
设置驱动使用的是

setJdbcUrl:设置url

setInitialPoolSize(int initialPoolSize)

setPassword:设置密码

setUser:设置用户名

不适用配置文件的使用方法:

package cn.toto.utils;

import java.beans.PropertyVetoException;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public
class JdbcUtils {

private
static DataSource
ds;

static {

try {

//初始化c3p0连接池

ComboPooledDataSource cpds = new ComboPooledDataSource();

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

cpds.setJdbcUrl("jdbc:mysql://localhost:3306/day14");

cpds.setUser("root");

cpds.setPassword("123456");

cpds.setInitialPoolSize(5);

cpds.setMaxPoolSize(20);

ds =cpds;

} catch (PropertyVetoException e) {

throw
new ExceptionInInitializerError("属性不匹配的错误");

}

}

//获取与指定数据的连接

public
static DataSource getSource(){

return
ds;

}

//获得与指定数据库的连接

public
static Connection getConnection()
throws SQLException {

//从连接池返回一个连接

return
ds.getConnection();

}

//释放资源

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

if(rs!=null){

try{

rs.close();

}catch(SQLException e){

e.printStackTrace();

}

rs = null;

}

if(stmt!=null){

try{

stmt.close();

}catch(SQLException e){

e.printStackTrace();

}

stmt=null;

}

if(conn!=null){

try{

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

conn = null;

}

}

}

用于测试的主方法:

package cn.toto.demo;

import java.sql.Connection;

import java.sql.SQLException;

import cn.toto.utils.JdbcUtils;

public
class Demo {

public
static
void main(String[] args)
throws SQLException {

Connection conn = JdbcUtils.getConnection();

System.out.println(conn);

//结果是:com.mchange.v2.c3p0.impl.NewProxyConnection@10bbf9e

}

}

通过配置文件的方式读取文件。

当通过设置配置文件xml时它可以自动查找,不用通过类加载的方式了。只要它的文件路径是在classloader(类路径也可以说是classes下面)的路径下面。(在官方文档中可以找到配置文件)

配置文件好后的文件是:

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

<c3p0-config>

<default-config>

<property
name="automaticTestTable">con_test</property>

<property
</property>

<property
</property>

<property
</property>

<property
</property>

<property
</property>

<property
</property>

<property
</property>

<user-overrides
user="test-user">

<property
</property>

<property
</property>

<property
</property>

</user-overrides>

</default-config>

<named-config
name="toto">

<property
</property>

<property
</property>

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

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

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

<property
</property>

</named-config>

</c3p0-config>

这时写好的JdbcUtils是:

package cn.toto.utils;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import
javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public
class JdbcUtils {

private
static
DataSourceds;

static {

//ds = new ComboPooledDataSource();//默认的缺省的配置

ds =
new ComboPooledDataSource("toto");//配置文件中设置的内容不用写其他的是因为它可以自动查找classloader下的c3p0-config.xml文件(要注意的是文件的名称必须是c3p0-config.xml)如果文件的名称不是这个,将出现错误。

}

//获取与指定数据的连接

public
static
DataSourcegetSource(){

return
ds;

}

//获得与指定数据库的连接

public
static Connection getConnection()
throws SQLException {

//从连接池返回一个连接

return
ds.getConnection();

}

//释放资源

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

if(rs!=null){

try{

rs.close();

}catch(SQLException e){

e.printStackTrace();

}

rs = null;

}

if(stmt!=null){

try{

stmt.close();

}catch(SQLException e){

e.printStackTrace();

}

stmt=null;

}

if(conn!=null){

try{

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

conn = null;

}

}

}

02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写的更多相关文章

  1. Java操作文件夹的工具类

    Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...

  2. Java操作属性文件之工具类

    最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...

  3. 【原创】POI操作Excel导入导出工具类ExcelUtil

    关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...

  4. xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil

    若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...

  5. Java 操作Redis封装RedisTemplate工具类

    package com.example.redisdistlock.util; import org.springframework.beans.factory.annotation.Autowire ...

  6. hibernate.cfg.xml配置(Oracle+c3p0)

    说明:数据库:Oracle10g:连接池:c3p0 结构: 一.配置hibernate.cfg.xml <?xml version="1.0" encoding=" ...

  7. 07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao

     1  创建day14数据库,创建user.sql表: A 创建数据库 day14 B 创建数据表 users create table users ( id int primary keyaut ...

  8. Mybatis config.xml 配置

    <!-- xml标准格式 --><?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE ...

  9. cordova 启动界面config.xml配置

    <preference name="SplashScreen" value="screen"/> <preference name=" ...

随机推荐

  1. Codeforces Round #402 (Div. 1)

    A题卡壳了,往离线倒着加那方面想了会儿,后来才发现方向错了,二十多分钟才过掉,过了B后做D,想法好像有点问题,最后只过两题,掉分了,差一点回紫. AC:AB Rank:173 Rating:2227- ...

  2. 51Nod 1781 跑的比谁都快

    香港记者跑的比谁都快是众所周知的常识. 现在,香港记者站在一颗有 n 个点的树的根结点上(即1号点),编号为 i 的点拥有权值 a[i] ,数据保证每个点的编号都小于它任意孩子结点的别号. 我们假定这 ...

  3. [bzoj4864][BeiJing 2017 Wc]神秘物质

    来自FallDream的博客,未经允许,请勿转载,谢谢. 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子.这 一天, 小诚刚从研 ...

  4. Codeforces Round #430 A. Kirill And The Game

    Kirill plays a new computer game. He came to the potion store where he can buy any potion. Each poti ...

  5. bzoj2500幸福的道路 树形dp+单调队列

    2500: 幸福的道路 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 434  Solved: 170[Submit][Status][Discuss ...

  6. mycat 1.6 简单的操作实例

    环境: centos7.4 + mysql5.7.20 + mycat1.6单台主机上安装了5台mysql_5.7.20 实例(3306,3307,3308,3309,3310)3306为独立实例 ( ...

  7. 智能优化算法对TSP问题的求解研究

    要求: TSP 算法(Traveling Salesman Problem)是指给定 n 个城市和各个城市之间的距离,要 求确定一条经过各个城市当且仅当一次的最短路径,它是一种典型的优化组合问题,其最 ...

  8. python学习之装饰器-

    python的装饰器 2018-02-26 在了解python的装饰器之前我们得了解python的高阶函数 python的高阶函数我们能返回一个函数名并且能将函数名作为参数传递 def outer() ...

  9. linux上快速搭建宝塔面板来操作便捷功能

    关于宝塔 Linux版请确保纯净系统安装(支持CentOS.Ubuntu.Debian.Fedora.Deepin),Web端管理,QQ群及论坛技术支持一键LAMP/LNMP.创建网站FTP.数据库. ...

  10. java中的构造,封装

    今天给大家讲一下面向对象中的构造,封装: 构造:构造方法有以下几个特点:1.方法名和类名一致.2.无返回类型.接下来的几种构造样式,直接上代码吧: //这是一个宠物类 有一个属性:名字(name) p ...