开发环境:win7
IDE:MyEclipse
1、根据要操作数据库类型导入数据库驱动和c3p0的jar包
2、配置数据库连接文件c3p0.porperties
--------------------------配置详情Start--------------------------------------------
#驱动
c3p0.driverClass=com.mysql.jdbc.Driver
#地址
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/(数据库名)?useUnicode=true&characterEncoding=UTF8 #问号后面的参数主要解决从数据库取中文值出现乱码的情况
#用户名
c3p0.user=***
#密码
c3p0.password=***
#----------------------------------------
#连接池初始化创建的连接数
c3p0.initialPoolSize=3
#连接池保持的最小连接数
c3p0.minPoolSize=3
#连接池在无空闲连接可用时,一次性创建的数据库连接数,default:3
c3p0.acquireIncrement=3
#连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15
c3p0.maxPoolSize=15
#连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,单位秒
c3p0.maxIdleTime=100
#连接池在获得新连接失败时重试的次数,如果小于等于0则无限重试直至连接获得成功
c3p0.acquireRtrayAttempts=30
#连接池在获得新连接时的间隔时间,单位毫秒
c3p0.acquireRtrayDelay=1000
--------------------------配置详情End--------------------------------------------
3、创建c3p0数据连接池类,该类只可创建1个对象
public class C3P0{
//定义私有datasource数据源对象ds
private datasource ds ;
//定义私有静态 类对象 pool
private static C3P0 pool;
//创建私有构造方法,并在构造方法中使用combopooleddatesource类实现数据源对象
private C3P0(){
ds = combopooleddatesource;
}
//创建公有静态的获取类对象方法 getInstance() 返回值是唯一的对象
public static final C3P0 getInstance(){
//判断对象是否为空
if(pool == null){
//如果为空,开始构建对象
pool = new C3P0();
}
//返回对象
return pool;
}
//创建获取连接器的方法,为防止获取连接器方法被同时调用,所以使用synchronized来修饰。(为啥要修饰?银行卡能同时异地取钱不?)
public synchronized final Connection getConnection(){
return ds.getConnection;
}
}
至此C3P0数据连接池的类创建完成,虽然以后我们还会学习到很多更先进的框架技术。