数据库连接池c3p0和德鲁伊druid数据库连接池的使用 JDBC讲解第二篇

接上一篇的文章继续来说

什么是数据库连接池
数据库连接池就是一个容器。里面放的就是Connection对象

c3p0数据库连接池的使用

使用的步骤

  1. 导入jar包
  2. 创建配置文件
  3. 创建数据库连接对象
  4. 获取连接

导入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&amp;serverTimezone=GMT&amp;useUnicode=true&amp;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>

德鲁伊数据库连接池的使用

  1. 使用步骤导入jar包
  2. 创建配置文件
  3. 加载配置文件
  4. 创建数据库连接对象
  5. 获取连接

导入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工具类的使用

  1. 导入jar包
  2. 创建配置文件并配置

这两步是一样的

  1. 创建工具类,写方法

直接上代码
工具类的创建就是一个简单的封装

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;
	}
}

  1. 使用工具类
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);
	}

这篇博客就到这里了

未来的三篇博客
将介绍

  1. 连接数据库的参数是什么、有什么作用

    连接数据库中url参数的作用,参数的含义

  2. MyBatis框架连接数据库
  3. Spring框架 JDBCTemplate的使用

还不去点个赞嘛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值