1.导入jar包(两个)
c3p0-0.9.5.2.jar和mchange-commons-java-0.2.12.jar
导入数据库驱动jar包
2.定义配置文件
配置文件名称:c3p0.properties 或者 c3p0-config.xml(叫这两个名称会自动寻找文件)
路径:默认在项目类路径(指的是在src下)
3.获取数据库连接池对象
创建核心对象
数据库连接池对象ComboPooledDataSource 【DataSource 连接池、数据源】
ComboPooledDataSource什么都不传使用默认的(使用较多)
DataSource ds = new ComboPooledDataSource();
指定名称可以使用指定配置
DataSource ds = new ComboPooledDataSource("otherc3p0");
4.获取连接:getConnection
获取连接对象
package cn.itcust.datasource.c3p0; import com.mchange.v2.c3p0.ComboPooledDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; /** * c3p0的演示 * */ public class C3P0Demo1 { public static void main(String[] args) throws SQLException { //1.导包 //2.写配置文件 //3.创建数据库连接池对象 DataSource ds = new ComboPooledDataSource(); //4.获取连接池对象 Connection conn = ds.getConnection(); //5.打印连接对象。字符串的形式展示获取到了。报错,null没获取到 System.out.println(conn); } }
输出的内容
JDBC4Connection类名
12bc6874哈希扣的值
package cn.itcust.datasource.c3p0; import com.mchange.v2.c3p0.ComboPooledDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; /** * c3p0演示,连接参数 */ public class C3P0Demo2 { public static void main(String[] args) throws SQLException { testNamedConfig(); } public static void testNamedConfig() throws SQLException {//为了方便调用设置为静态的 //获取DataSource,使用指定名称配置 DataSource ds = new ComboPooledDataSource("otherc3p0"); //2.获取连接 for (int i = 1; i < 11; i++) { Connection conn = ds.getConnection(); System.out.println(i + ":" + conn); } } }
配置文件
<c3p0-config> <!-- 使用 默认-配置 读取连接池对象 --> <default-config> <!-- 连接参数 --> <property name="driverClass">com.mysql.jdbc.Driver</property> <!--注册驱动--> <property name="jdbcUrl">jdbc:mysql://localhost:3306/db4</property> <!--数据库连接对象的 地址--> <property name="user">root</property> <!--数据库连接对象的 用户名称--> <property name="password">ROOT</property> <!--数据库连接对象的 用户密码--> <!-- 连接池参数 --> <property name="initialPoolSize">5</property> <!--初始化申请连接的数量--> <property name="maxPoolSize">10</property> <!--最大的连接数量--> <!--同时进来的10个人会把连接对象用完,精确到毫秒,这个根据数据库的最大连接数量和电脑的性能设置--> <property name="checkoutTimeout">3000</property> <!--申请不到对象等待3秒 报超时时间--> </default-config> <!--c3p0配置文件很人性化,可以通过一个配置文件操作不同数据库 --> <named-config name="otherc3p0"> <!-- 连接参数 --> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/girls</property> <property name="user">root</property> <property name="password">ROOT</property> <!-- 连接池参数 --> <property name="initialPoolSize">5</property> <property name="maxPoolSize">8</property> <property name="checkoutTimeout">1000</property> </named-config> </c3p0-config>