C3P0连接池
1.先导入jar包
* c3p0-0.9.1.2.jar
2.提供了类ComboPooledDataSource
* new ComboPooledDataSource()
* 设置4大参数
cpds.setDriverClass( "com.mysql.jdbc.Driver" );
cpds.setJdbcUrl( "jdbc:mysql:///day16" );
cpds.setUser("root");
cpds.setPassword("root");
3.编写C3P0的配置文件
* C3P0默认去自己去找XML的文件,XML文件名称是(c3p0-config.xml)
* 把配置文件放在src的目录下
4.编写配置文件内容
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<!-- 配置4大参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///day16</property>
<property name="user">root</property>
<property name="password">root</property>
</default-config>
<named-config name="myoracle">
<!-- 配置4大参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///day16</property>
<property name="user">root</property>
<property name="password">root</property>
</named-config>
</c3p0-config>
5.代码
package cn.itcast.c3p0;
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import cn.itcast.utils.MyJdbcUtil;
/**
* 测试C3P0连接池
* @author Administrator
*/
public class C3p0Demo {
@Test
public void run1(){
Connection conn = null;
PreparedStatement stmt = null;
try {
// 现在使用的是C3P0连接池
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 设置4大参数
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql:///day16");
dataSource.setUser("root");
dataSource.setPassword("root");
// 可以获取连接
conn = dataSource.getConnection();
// 剩下的操作,JDBC的操作
String sql = "update t_account set money = 300 where username = ?";
// 预编译SQL
stmt = conn.prepareStatement(sql);
// 设置参数
stmt.setString(1, "美美");
// 执行
stmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 原来:释放资源,conn.close()销毁连接。
// 现在咱们已经使用了数据库的连接池了 conn.close()方法不是销毁了,是归还连接了。
MyJdbcUtil.release(conn, stmt);
}
}
/**
* 读取配置文件
* 把c3p0-conf.xml文件放在src目录下
* 程序默认的自动的读取该文件
*/
@Test
public void run2(){
Connection conn = null;
PreparedStatement stmt = null;
try {
// 现在使用的是C3P0连接池
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 可以获取连接
conn = dataSource.getConnection();
// 剩下的操作,JDBC的操作
String sql = "update t_account set money = 600 where username = ?";
// 预编译SQL
stmt = conn.prepareStatement(sql);
// 设置参数
stmt.setString(1, "美美");
// 执行
stmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 原来:释放资源,conn.close()销毁连接。
// 现在咱们已经使用了数据库的连接池了 conn.close()方法不是销毁了,是归还连接了。
MyJdbcUtil.release(conn, stmt);
}
}
}