Eclipse连接MySql数据库——c3p0连接池,MySQL8.0

工具

①mysql-connector-java-8.0.11.jar 驱动包
②eclipse 开发工具
③mysql-8.0.11 数据库

Eclipse连接MsSql数据库步骤

一、 mysql-connector-java-8.0.11.jar 下载
下载网址:https://dev.mysql.com/downloads/connector/j/

二、eclipse导入jdbc的驱动包
前面两步参考本人写的另外两个链接:
Eclipse连接MsSql数据库 8.0版JDBC驱动
Eclipse加载MySQL驱动问题

三、 java连接数据库(c3p0连接池)
我们这里不用JDBC连接,用c3p0连接池连接。
首先我们需要知道为什么要使用连接池:因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉,每次新建连接都需要140毫秒左右的时间而C3P0连接池会池化连接,随时取用,平均每次取用只需要10-20毫秒,所以如果是很多客户端并发随机访问数据库的话,使用连接池的效率会高。
(1)首先需要导入相对应的jar包,导入方法同前面一样
在这里插入图片描述
现在加上JDBC的jar包,应该是有如下四个jar包
在这里插入图片描述
(2)编写数据库的配置文件:c3p0-config.xml
示例:

<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>
  <!-- This is my config for mysql-->
  <named-config name="mysql/news">
    <!-- 指定链接数据源的基本属性 --> 
    <property name="user">root</property>
    <property name="password">root</property>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/j1052_news?useUnicode=true&amp;characterEncoding=UTF8</property>
    
    <!-- 若数据库中连接不足时,一次向数据库服务器申请多少个链接 -->
    <property name="acquireIncrement">50</property>
    <!-- 初始化数据库连接池时,连接的个数 -->
    <property name="initialPoolSize">5</property>
    <!-- 数据库连接池中最小连接数 -->
    <property name="minPoolSize">5</property>
    <!-- 数据库连接池中最大连接数 -->
    <property name="maxPoolSize">1000</property>
    <!-- c3p0数据库连接池中可以维护的Statement对象的个数 -->
    <property name="maxStatements">20</property>
    <!-- 每个连接同时可以使用的Statement对象的个数 --> 
    <property name="maxStatementsPerConnection">5</property>
  </named-config>
</c3p0-config>

(3)写一个c3p0连接数据库的类,叫DBUtil类

package com.wkd.util;

import java.sql.*;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 数据库工具类
 * @author 菲菲
 *
 */
public class DBUtil {
	
	private static ComboPooledDataSource cpds = null;//数据源
	
	/**
	 * 获取连接对象
	 * @return
	 */
	public static Connection getConnection() {
		try {
			if(cpds == null) {//第一次请求数据库
				//初始化数据源  参数要与c3p0-config.xml里面named-config标签的name值一样
				cpds = new ComboPooledDataSource("mysql/myblog");
			}
			return cpds.getConnection();//从连接池中获取连接对象
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("获取连接失败.....");
		}
		return null;
	}

	/**
	 * 关闭所有数据库,释放资源
	 * @param conn
	 * @param stm
	 * @param pstmt
	 * @param rs
	 */
	public static void closeAll(Connection conn,Statement stmt,  PreparedStatement pstmt,ResultSet rs) {
		try {
			if(rs!= null) {
				rs.close();
				rs = null;
			}
			if(pstmt!=null) {
				pstmt.close();
				pstmt = null;
			}
			if(stmt !=null) {
				stmt.close();
				stmt = null;
			}
			if(conn!=null) {
				conn.close();//将当前连接对象返回到连接池中,供下次调用
				conn = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		Connection conn = DBUtil.getConnection();
		System.out.println(conn == null ?"连接失败":"连接成功");
	}
}

然后运行测试自己数据库是否连接成功。
mysql-connector-java-8.0.11.jar 包和c3p0连接池的三个jar包打包上传啦。

发布了53 篇原创文章 · 获赞 60 · 访问量 4935

猜你喜欢

转载自blog.csdn.net/qq_37717494/article/details/104564414