接上一篇的文章继续来说
什么是数据库连接池
数据库连接池就是一个容器。里面放的就是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.Driverurl=jdbc:mysql://localhost:3306/electrochemistry?serverTimezone=GMT%2B8username=rootpassword=123456initialSize=5maxActive=10maxWait=3000maxIdle=8minIdle=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工具类的使用
导入jar包创建配置文件并配置上面讲的是druid的基本使用,下面将一下druid工具类的使用
创建工具类,写方法这两步是一样的
直接上代码
工具类的创建就是一个简单的封装
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 blocke.printStackTrace();}try {ds=DruidDataSourceFactory.createDataSource(pro);} catch (Exception e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();}}if(conn!=null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void close(ResultSet rs,Statement sta,Connection conn) {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}close(sta, conn);}public static DataSource getDataSource() {return ds;}}
使用工具类
public static void main(String[] args) {// TODO Auto-generated method stubConnection connection=null;try {connection = druidUtil.getConnection();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(connection);try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}druidUtil.close(null, connection);System.out.println(connection);}
这篇博客就到这里了
未来的三篇博客
将介绍
连接数据库的参数是什么、有什么作用
MyBatis框架连接数据库Spring框架 JDBCTemplate的使用连接数据库中url参数的作用,参数的含义
还不去点个赞嘛
如果觉得《数据库连接池c3p0和德鲁伊druid数据库连接池的使用 JDBC讲解第二篇》对你有帮助,请点赞、收藏,并留下你的观点哦!