接上一篇的文章继续来说
什么是数据库连接池
数据库连接池就是一个容器。里面放的就是Connection对象
c3p0数据库连接池的使用
使用的步骤
- 导入jar包
- 创建配置文件
- 创建数据库连接对象
- 获取连接
导入jar包
c3p0需要导入两个jar包
创建配置文件
配置文件的名字必须是固定的
c3p0.properties 或者是 c3p0-config.xml
必须是这两个配置文件中的某一个
以c3p0为例讲解
配置文件需要放在sourceFolder文件夹下,或者src目录下
代码中写了参数的含义
<!-- 默认获取连接的方式 -->
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/electrochemistry?useSSL=true&serverTimezone=GMT&useUnicode=true&characterEncoding=utf8
</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 连接池初始化连接的个数 -->
<property name="initialPoolSize">5</property>
<!-- 连接池最大连接的个数 -->
<property name="maxPoolSize">10</property>
<!-- 获取连接的最大时间限制 超时就会抛异常 -->
<property name="checkoutTimeout">3000</property>
</default-config>
Demo 中的代码
//创建数据库连接对象
DataSource ds=new ComboPooledDataSource();
System.out.println(ds);
//获取连接
Connection conn = ds.getConnection();
System.out.println(conn);
释放连接
/**
* 在使用数据库连接池之前conn.close() 表示关闭连接
* 在数据库连接池中conn.close() 表示释放连接,将连接返回到数据库连接池中
*/
conn.close();
在c3p0的配置文件中可以使用
下面这样的格式
在创建数据库连接对象的时候将name属性值作为参数传递
就可以获取下面xml(对应xml)中的数据库连接对象
获取的连接也是对应配置的
//创建数据库连接对象
DataSource ds=new ComboPooledDataSource();
<named-config name="mysql">
<property name="acquireIncrement">50</property>
<property name="initialPoolSize">100</property>
<property name="minPoolSize">50</property>
<property name="maxPoolSize">1000</property><!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
</named-config>
德鲁伊数据库连接池的使用
- 使用步骤导入jar包
- 创建配置文件
- 加载配置文件
- 创建数据库连接对象
- 获取连接
导入jar包
配置文件
druid数据库连接池的配置文件名可以是任意的,但是必须是.properties后缀名
参数的意义和c3p0的含义是一样的
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/electrochemistry?serverTimezone=GMT%2B8
username=root
password=123456
initialSize=5
maxActive=10
maxWait=3000
maxIdle=8
minIdle=3
加载配置文件
import java.util.Properties;
这里的properties,可能会导错包,导错包会导致没有load()方法
这里的
import javax.sql.DataSource;
这个包也可能导错,请注意
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
public class druidDemo {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//加载配置文件
Properties pro =new Properties();
InputStream is=druidDemo.class.getClassLoader().getResourceAsStream("jdbc.properties");
pro.load(is);
//创建数据库连接对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
System.out.println(ds);
Connection conn = ds.getConnection();
System.out.println(conn);
}
}
druid工具类的使用
上面讲的是druid的基本使用,下面将一下druid工具类的使用
- 导入jar包
- 创建配置文件并配置
这两步是一样的
- 创建工具类,写方法
直接上代码
工具类的创建就是一个简单的封装
package Util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
public class druidUtil {
private static Properties pro=null;
private static InputStream is=null;
private static DataSource ds=null;
static {
pro=new Properties();
is=druidUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
pro.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ds=DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
public static void close(Statement sta,Connection conn) {
if(sta!=null) {
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void close(ResultSet rs,Statement sta,Connection conn) {
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
close(sta, conn);
}
public static DataSource getDataSource() {
return ds;
}
}
- 使用工具类
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection connection=null;
try {
connection = druidUtil.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(connection);
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
druidUtil.close(null, connection);
System.out.println(connection);
}
这篇博客就到这里了
未来的三篇博客
将介绍
- 连接数据库的参数是什么、有什么作用
连接数据库中url参数的作用,参数的含义
- MyBatis框架连接数据库
- Spring框架 JDBCTemplate的使用
还不去点个赞嘛