一、什么是数据库连接池,主要作用是什么?
数据库连接池是一项数据库优化技术,它负责分配、管理、释放数据库连接池。
它的主要作用是让应用程序可以重复利用一些提前创建好的数据库连接,而不是每次应用程序访问都重新创建一个。从而节约数据库节约和服务器内存。
数据连接池有很多,下面以C3P0举例。
二、C3P0 JAR包下载
2.1.下载地址:https://sourceforge.net/projects/c3p0/
选择bin,zip结尾的下载,下载完后导入java项目即可。
三、C3p0使用代码
package jdbc;
import com.mchange.v2.c3p0.*;
import jdbc.utils.JDBCUtils;
import org.junit.jupiter.api.Test;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet ;
/**
* @author created by jackie on 2020/4/21
* @description: cp30连接池demo
*/
public class connPool {
@Test
public void demo(){
//创建连接池;
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//设置连接参数,配置参数也可以写到xml文件里面
String driverClass = "com.mysql.cj.jdbc.Driver" ;
String url = "jdbc:mysql://ip:端口号/数据库名称?characterEncoding=UTF-8";
String user = "root" ;
String password = "123456";
try {
dataSource.setDriverClass(driverClass);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
dataSource.setJdbcUrl(url);
dataSource.setUser(user);
dataSource.setPassword(password);
//设置连接池最大连接数
dataSource.setMaxPoolSize(30);
Connection conn =null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
try {
//获得连接
conn = dataSource.getConnection();
//编写sql语句
String sql = "select * from jdbc"; //jdbc是我的表名称
//预编译sql
pstmt = conn.prepareStatement(sql);
//设置参数,无参数不用设置
//执行sql
rs= pstmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getInt("uid")+" "+rs.getString("username")
+" "+rs.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.release(conn,pstmt,rs);
}
}
}