使用C3P0的前提是需要引入jar包

具体使用如下:

/**
* c3p0的应用
* 前提:引入c3p0的jar包
*/
public class Test {
public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
//C3P0会自动读取src下的c3p0-config.xml文件 获取配置信息(driver,url,username,password等)
//用ComboPooledDataSource这个对象从连接池获取Connection 参数为配置文件的name 可不传则使用默认配置
ComboPooledDataSource cpds = new ComboPooledDataSource("dbTemp2"); //也可以不使用配置文件 自己设置参数 但是不推荐
/*
cpds.setJdbcUrl("");
cpds.setDriverClass("");
cpds.setUser("");
cpds.setPassword("");*/
       //从连接池中获取Connection对象
conn = cpds.getConnection();
//后面的代码跟我们之前的代码基本一样
stat = conn.createStatement();
String sql = "SELECT * FROM users";
rs = stat.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("uid");
String name = rs.getString("uname");
String psw = rs.getString("psw");
System.out.println(id + "--" + name + "--" + psw);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//这里先使用之前工具类的释放资源的方法
JDBCSimpleUtils.release(conn, stat, rs);
}
}
}

c3p0-config.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--默认配置-->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///dbTemp</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="minPoolSize">5</property>
<property name="initialPoolSize">5</property>
</default-config>
<!--name为dbTemp2的配置-->
<named-config name="dbTemp2">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///dbTemp2</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="minPoolSize">5</property>
<property name="initialPoolSize">5</property>
</named-config>
</c3p0-config>

百尺竿头 更进一步  抽取C3P0简单工具类来使用:

/**
* C3P0简单工具类
*/
public class C3P0SimpleUtils {
//1. 构造私有
private C3P0SimpleUtils() {
} //2. 定义一个变量, 用来记录连接池对象. 由于所有的连接池对象都继承自DataSource 所以这里使用多态的形式
private static DataSource ds = new ComboPooledDataSource(); //3. 对外提供一个方法, 用来获取连接池对象. /**
* 获取连接池对象.
*
* @return
*/
public static DataSource getDataSource() {
return ds;
} //4. 对外提供一个方法, 用来获取连接对象. 连接对象是从数据库连接池中获取的. /**
* 从数据库连接池获取连接对象
* @return
*/
public static Connection getConnection() {
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
} //5. 释放资源 释放资源的方法跟之前提取的JDBC简单工具类基本一样
public static void release(Connection conn, Statement stat, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stat != null) {
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} public static void release(Connection conn, Statement stat) {
try {
if (stat != null) {
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

那么我们使用我们提取出来的工具类来操作一下:

/**
* 使用c3p0工具类
*/
public class Test {
public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
//这里使用我们刚抽取出的工具类来从连接池中取出数据库连接对象
conn = C3P0SimpleUtils.getConnection();
//下面代码跟之前一样
stat = conn.createStatement();
String sql = "SELECT * FROM users";
rs = stat.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("uid");
String name = rs.getString("uname");
String psw = rs.getString("psw");
System.out.println(id + "--" + name + "--" + psw);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//这里可以使用我们C3P0SimpleUtils工具类的释放资源的方法
C3P0SimpleUtils.release(conn, stat, rs);
}
}
}

java基础之JDBC七:C3P0连接池的使用的更多相关文章

  1. 【JDBC】C3P0连接池的使用

    C3P0连接池的c3p0-config.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p ...

  2. Java测试开发--MySql之C3P0连接池(八)

    连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...

  3. (30)java web的hibernate使用-c3p0连接池配置

    hibernate支持c3p0连接池 需要导入c3p0的jar包 <!-- 配置连接驱动管理类 --> <property name="hibernate.connecti ...

  4. java学习笔记41(数据库连接池 C3p0连接池)

    在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...

  5. c3p0连接池]

    <c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...

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

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

  7. 网络协议 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 ...

  8. Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate

    连接池可以大大提高数据库的性能和连接速度,将那些已连接的数据库连接存放在一个连接池里,以后别人要连接数据库的时候,将不会重新建立数据库连接,直接从连接池中取出可用的连接,用户使用完毕后,会释放连接重新 ...

  9. C3P0连接池配置(C3P0Utils.java)

    配置文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-confi ...

随机推荐

  1. 基于Python和Tornado的WEB Terminal

    https://github.com/liftoff/GateOne 亮点有以下: ↪ Clientless ↪ Multi-User and Multi-Session ↪ Multi-Auth a ...

  2. 6.etc目录下重要文件和目录详解

    1./etc/下的重要的配置文件 /etc(二进制软件包的 yum /rpm 安装的软件和所有系统管理所需要的配置文件和子目录.还有安装的服务的启动命令也放置在此处) /etc/sysconfig/n ...

  3. android 进制转换方法

    import android.util.Log; public class CommandHelper { public static String intToHexString(int value) ...

  4. Fedora14使用yum安装mysql

    linux下使用yum安装mysql   1.安装 查看有没有安装过:           yum list installed mysql*           rpm -qa | grep mys ...

  5. HihoCoder 1044 01-string 贪心

    1144 : 01串 时间限制:7000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001& ...

  6. python库之threading

    This module constructs higher-level threading interfaces on top of the lower level python库之_threadmo ...

  7. 2017-2018-2 20179215《网络攻防实践》seed缓冲区溢出实验

    seed缓冲区溢出实验 有漏洞的程序: /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our tas ...

  8. excel oracle字段命名(大写下划线分词)转 驼峰命名

    干货: (帕斯卡) =LEFT(C251,1)&MID(SUBSTITUTE(PROPER(C251),"_",""),2,100) (驼峰) =LOW ...

  9. php://input解决APP发送图片问题

    今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数! 以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说) 1.APP发1.jpg,而且带有 ...

  10. 手把手教你在Eclipse中使用CVS Branch功能

    Brach 的作用: 开发新版本的人员就基于 main trunk 工作,而 fix bug 的人员就基于 branch 工作. 一旦在 branch上将 Release_1_0的 bug修复了,我们 ...