一、什么是连接池
(一)概念及原理
即一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象。当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
(二)优点
- 节约资源
- 用户访问高效
二、数据库连接池步骤
- 导入jar包:
a. c3p0-版本.jar
b. mchange-commons-java-版本.jar - 定义配置文件:
a. 名称:c3p0.properties或c3p0-config.xml
b. 直接将文件放在src目录下即可 - 创建核心对象(即数据库连接池对象) ComboPooledDataSource
- 获取连接:getConnection
三、具体代码
有关c3p0-config.xml部分:
<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
<!-- 使用默认的配置读取连接池对象-->
<default-config>
<!-- 连接参数-->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost/c3p0?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai</property>
<property name="user">root</property>
<property name="password">2019012660Moon</property>
<!-- 连接池参数-->
<!--初始化申请的连接数量,例如,此次申请5个-->
<property name="initialPoolSize">5</property>
<!--最大的连接数量,例如,此次连接池最多只有10个连接对象-->
<property name="maxPoolSize">10</property>
<!--超时时间,如果找不到连接对象,3000ms后报错误信息-->
<property name="checkoutTimeout">3000</property>
<property name="acquireIncrement" value="10"/>
</default-config>
<named-config name="otherc3p0">
</named-config>
</c3p0-config>
Java代码部分:
package com.c3p0;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class C3P0Demo1 {
public static void main(String[] args) {
// 创建数据库连接池对象
DataSource ds=new ComboPooledDataSource();
// 获取连接对象
Connection conn = null;
try {
conn=ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(conn);
}
}
四、有关SQLException
在第一次连接数据库连接池时,出现了SQLException错误,在网上也找了很多解决方法但都没有成功,后来发现在xml文件中应加上:
即可成功连接数据库连接池。