通過JDBC利用C3P0數據庫連接池連接數據庫

JDBC之C3P0數據庫連接池

1 首先在src中創建c3p0-config.xml 配置文件,文件中內容如下(首先下載C3P0.jar工具包 並放入項目環境變量中)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<c3p0-config>
<!--下面四個是數據庫連接必須需要的東西 -->
  <named-config name="MySQL">   <!--爲你的數據庫起一個名字,我的叫MySQL -->
  <property name="driverClass">com.mysql.jdbc.Driver</property> 
  <property name="jdbcUrl">jdbc:mysql:localhost:3306/jdbc_01</property>
  <property name="user">root</property>   <!--數據庫賬號 -->
  <property name="password">root</property> <!--數據庫密碼 -->
  
  	<!-- 若數據庫鏈接數量不足的時候,向數據庫申請的連接數量  -->
    <property name="acquireIncrement">5</property>
    <!-- 初始化數據庫連接池連接的數量  -->
    <property name="initialPoolSize">10</property>
    <!-- 數據庫連接池中最小連接數  -->
    <property name="minPoolSize">5</property>
    <!-- 數據庫連接池中最大連接數  -->
    <property name="maxPoolSize">100</property>
    <!-- C3P0數據庫連接池可以維護的Statement的數量  -->
    <property name="maxStatements">2</property> 
    <!-- 每個連接可同時使用Statement的數量  -->
    <property name="maxStatementsPerConnection">5</property>
  </named-config>
</c3p0-config>

2 創建一個工具類用於利用C3P0數據庫連接池獲得數據庫連接 工具類如下

package cn.qhy.jdbc;

import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class MyDBUtils {
	private static DataSource dataSource;
	static {// 靜態代碼塊,只執行一次
		dataSource = new ComboPooledDataSource("MySQL");
	}

	/**
	 * 
	 * @return
	 * @throws SQLException
	 */
	public static Connection getConnection() throws SQLException {
		return dataSource.getConnection();
	}

	/**
	 * 通用的用來關閉數據有關的所有的資源的操作
	 */
	public static void close(Connection conn, Statement sta, ResultSet re) {
		if (re != null)
			try {
				re.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		if (sta != null)
			try {
				sta.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		if (conn != null)
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}
}

3 創建測試類,測試C3P0是否連接數據庫(利用JUnit單元測試)

package cn.qhy.test;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;

import org.junit.jupiter.api.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import cn.qhy.jdbc.MyDBUtils;

public class C3P0Test {
	/**
	 * @throws SQLException
	 * 
	 */
	@Test
	public void c3p0xmlTest() throws SQLException {
		Connection conn = MyDBUtils.getConnection();
		System.out.println(conn);
		conn.close();
	}
}

結果如下
成功獲得數據庫連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章