1、在src下新建c3p0-config.xml,名字不能改只能是这个,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="user">root</property> <property name="password">root</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test</property> <!-- 连接池初始化时建立的连接数 默认值是3 --> <property name="initialPoolSize">3</property> <!-- 连接的最大空闲时间 单位秒 默认是0-代表永远不会断开连接 超过设定时间的空闲连接将会断开 --> <property name="maxIdleTime">30</property> <!-- 连接池中拥有的最大连接数 默认值为15个 --> <property name="maxPoolSize">20</property> <!-- 连接池中保持的最小连接数 默认值为3个--> <property name="minPoolSize">3</property> <!-- 将连接池的连接数保持在minpoolsize 必须小于maxIdleTime设置 默认值为0代表不处理 单位秒 --> <property name="maxIdleTimeExcessConnections">15</property> </default-config> <!-- SQLServer数据库 测试用 --> <named-config name="sqlserver"> <property name="user">sa</property> <property name="password">sa</property> <property name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="jdbcUrl">jdbc:sqlserver://127.0.0.1:1433;databaseName=test</property> <property name="initialPoolSize">3</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">20</property> <property name="minPoolSize">3</property> <property name="maxIdleTimeExcessConnections">15</property> </named-config> </c3p0-config>
我这里建了两个数据源:第一个是默认的数据源MySQL,第二个是自己指定名称的数据源sqlserver。两者如何使用第二步中有介绍。
2、新建类进行连接测试:
public class DBConnectionByC3P0ForXML {
private static ComboPooledDataSource cpds = null;
//私有构造方法,不能创建对象
private DBConnectionByC3P0ForXML() {}
//加载数据库连接的配置文件和驱动
static {
// 这里有个优点,写好配置文件,想换数据库,简单
//cpds = new ComboPooledDataSource();// 这是默认的mysql数据库
cpds = new ComboPooledDataSource("sqlserver");//sqlserver数据库
}
//获取连接对象
public static Connection getConnection() throws SQLException {
return cpds.getConnection();
}
//获取数据源
public static DataSource getDataSource() {
return cpds;
}
private static Integer counter = 0;
public static void main(String[] args){
for (int i = 1; i <= 20; i++) {
new Thread(new Runnable() {
public void run() {
Connection conn = null;
try {
conn = DBConnectionByC3P0ForXML.getConnection();
synchronized (counter) {
System.out.print(Thread.currentThread().getName());
System.out.print("counter=" +(counter++)+ "\tconn="+conn);
System.out.println();
conn.prepareStatement("select * from s_user");
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}).start();
}
}
}
主要jar包:c3p0-0.9.2-pre4.jar、mchange-commons-java-0.2.2.jar