C3P0 与 DBCP 的基础使用

此文用于自我巩固与分享,也为了与 “JDBC进化史一文”  进行衔接

本文所有用到的jar包都会放在CSDN下载区,方便下载 链接:https://download.csdn.net/download/u013781343/10358284

首先我们来看C3P0连接池的使用

在使用C3P0连接池之前需要引入相关jar包


同时不要忘记,还需要引入C3P0配置文件,相关配置项有兴趣的话可以去看看文档


具体配置内容如下


这样准备工作就做好了,接下来就是上代码的环节,我们可以自己创建一个C3P0工具类方便以后使用

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* @desc: mysql c3p0连接池使用
* @createTime: 2018年4月18日 下午7:32:42
* @version: v1.0
 */


public class C3P0Utils{
	//获得C3P0连接池关键的对象ComboPooledDataSource 构造方法不传递参数使用默认配置连接信息项
	private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
	//获得连接池数据源
	public static DataSource getDataSource(){
		return dataSource;
	}
	//获得连接
	public static Connection getConnection(){
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	//释放链接
	public static void closeResource(Connection conn, Statement sta, ResultSet res){
		if (res != null) {
			try {
				res.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (sta != null) {
			try {
				sta.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
				System.out.println("连接关闭");
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

经过测试,正常使用,这只是基础的使用方法。

接下来我们看一看DBCP连接池的使用方法

在使用之前,按照惯例,引入相应的jar包


然后添加properties文件,注意事项如下


文件位置如下


配置内容见下图,注意 图中红框内 用户名和密码的键名必须为 username 与 password 否则DBCP无法获取到正确的信息


接下来就是代码时间了,同时请注意代码中BasicDataSourceFactory类所属包为org.apache.commons.dbcp,别搞错了


DBCP连接池代码

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 org.apache.commons.dbcp.BasicDataSourceFactory;

/**
 * 
 * @desc: mysql dbcp工具类
 * @createTime: 2018年4月19日 下午3:29:15
 * @version: v1.0
 */
public class DBCPUtils {
	private static DataSource dataSource;
	// 静态代码块加载properties文件内容
	static {
		try {
			Properties pro = new Properties();
			InputStream in = DBCPUtils.class.getClassLoader().getResourceAsStream("dbconfig.properties");
			pro.load(in);
			dataSource = BasicDataSourceFactory.createDataSource(pro);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//获得连接
		public static Connection getConnection(){
			Connection conn = null;
			try {
				conn = dataSource.getConnection();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return conn;
		}
		//释放链接
		public static void closeResource(Connection conn, Statement sta, ResultSet res){
			if (res != null) {
				try {
					res.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (sta != null) {
				try {
					sta.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.close();
					System.out.println("连接关闭");
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
}
到此我们连接池的基本使用就完成了,有兴趣的朋友可以去选择自己喜欢的连接池使用,同时我们也可以发现原生jdbc要写的代码还是有点多,那么为了更进一步简化开发过程,我们可以使用DBUtils工具类来简化开发,具体使用步骤也会单独开一篇博文来介绍!

猜你喜欢

转载自blog.csdn.net/u013781343/article/details/79995262