c3p0的使用

来源:互联网 发布:将电脑网络共享给手机 编辑:程序博客网 时间:2024/05/17 00:14

使用c3p0我们需要两个jar包,这两个jar包分别是:c3p0-0.9.5.2.jar和mchange-commons-java-0.2.11.jar,如果缺少了第二个jar包的话,那么将会报java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector at com.weixin.util.Db.(Db.java:16) at com.weixin.test.DataSourceTest.testPool(DataSourceTest.java:15) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.N这个错误,下面我们来看下c3p0的使用方法:

package com.weixin.util;import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;/** * 创建数据库连接类 * @author wan */public class Db {    private static ComboPooledDataSource ds = new ComboPooledDataSource();    static {        try {            ds.setDriverClass(WeixinUtil.prop.getProperty("c3p0.driverClass"));            ds.setJdbcUrl(WeixinUtil.prop.getProperty("c3p0.jdbcUrl"));            ds.setUser(WeixinUtil.prop.getProperty("c3p0.user"));            ds.setPassword(WeixinUtil.prop.getProperty("c3p0.password"));            ds.setMaxPoolSize(Integer.parseInt(WeixinUtil.prop.getProperty("c3p0.maxPoolSize")));            ds.setMinPoolSize(Integer.parseInt(WeixinUtil.prop.getProperty("c3p0.minPoolSize")));            ds.setInitialPoolSize(Integer.parseInt(WeixinUtil.prop.getProperty("c3p0.initialPoolSize")));            ds.setMaxStatements(Integer.parseInt(WeixinUtil.prop.getProperty("c3p0.maxStatementSize")));        } catch (PropertyVetoException e) {            e.printStackTrace();        }    }    public static Connection getConnection() {        try {            return ds.getConnection();        } catch (SQLException e) {            e.printStackTrace();        }        return null;    }}

下面我来逐项的解释:上面一个私有的ComboPooledDataSource是数据源,通俗点说就是数据库连接池由它管理,后面我们获得Connection也是通过它获得的,这个工具类里面有一个静态代块,这个静态代码块的作用是用来设置数据源的一些参数的,例如,ds.setDriverClass(WeixinUtil.prop.getProperty(“c3p0.driverClass”));这一行代码是用来设置数据库连接的驱动的,下面的内容类似,例如设置数据库用户名,设置用户名密码,设置数据库连接池的最大连接数等等,WeixinUtil.prop.getProperty(“c3p0.driverClass”);这里面的代码是我将数据库连接的信息配置到了属性文件里面,下面来看看属性文件:

c3p0.driverClass=com.mysql.jdbc.Driverc3p0.jdbcUrl=jdbc:mysql://localhost:3306/mytestc3p0.user=rootc3p0.password=rootc3p0.minPoolSize=5c3p0.maxPoolSize=20c3p0.acquireIncrement=5c3p0.initialPoolSize=5c3p0.maxStatementSize=180c3p0.maxIdleTime=240

这上面是数据库连接池的属性文件

0 0
原创粉丝点击