C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

例:

代码:

工具类:

package c3p0b01;
import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class C3P0Utils {
// * 1 在成员变量位置 创建一个静态ComboPooledDataSource对象
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
// * 2 在静态d代码块中使用ComboPooledDataSource对象 setxxxx 方法 设置数据库连接
static {

try {
//设置注册驱动程序
dataSource.setDriverClass("com.mysql.jdbc.Driver");
//url
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/gip");
//数据库用户名
dataSource.setUser("root");
//数据库用密码
dataSource.setPassword("hao123456");

} catch (PropertyVetoException e) {
e.printStackTrace();
}
}
// * 3 定义一个静态方法ComboPooledDataSource对象中获得数据库连接Connection
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("数据库连接失败"+e);
}
}
// * 4 释放资源
public static void close(ResultSet rs, Statement state,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(state!=null){
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if(conn!=null){
try {
conn.close();// 归还
} catch (SQLException e) {
e.printStackTrace();
}
}

}
}
xml:
<c3p0-config>
<!-- 使用默认的配置读取连接池对象-->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/gip</property>
<property name="user">root</property>
<property name="password">hao123456</property>

<!-- 连接池参数 -->
<!-- 初始连接数 -->
<property name="initialPoolSize">5</property>
<!-- 最大连接数 -->
<property name="maxPoolSize">10</property>
<!-- 最大等待时间 -->
<property name="checkoutTimeout">2000</property>
<!-- 最大空闲回收时间 -->
<property name="maxIdleTime">1000</property>
</default-config>


操作类:
package c3p0b01;

import org.apache.commons.dbutils.QueryRunner;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class Demo01 {
public static void main(String[] args) throws SQLException {
QueryRunner qr = new QueryRunner();
Connection conn = C3P0xmlUtils.getConnection();
int i = qr.update(conn, "update gip_sort set sdesc='喝酒' where sid=?", 3);
System.out.println(i);
}
}