c3p0 0.9.1.2 配套mysql_连接数据库,使用c3p0技术连接MySQL数据库

读取配置文件连接MySQL数据库

先确认已经导入了 mysql 的驱动包

db.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/v20?useUnicode=true&characterEncoding=utf8

username=root

password=123456

JdbcUtil.java

package com.stu_mvc.utils;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

public class JdbcUtil {

private static String CLASS_DRIVER = "";

private static String URL = "";

private static String USERNAME = "";

private static String PASSWORD = "";

static {

Properties properties = new Properties();

try {

//读取上面的配置文件

properties.load(JdbcUtil.class.getResourceAsStream("/db.properties"));

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

CLASS_DRIVER = properties.getProperty("driver");

URL = properties.getProperty("url");

USERNAME = properties.getProperty("username");

PASSWORD = properties.getProperty("password");

try {

Class.forName(CLASS_DRIVER);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

/**

*getConn()

*获取conn

*/

public static Connection getConn() {

Connection conn = null;

try {

conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

/**

* 利用泛型改进释放资源 rs,st,conn

*/

public static void closeAll(T... autos) {

for (AutoCloseable t : autos) {

if (t != null) {

try {

t.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

}

使用 c3p0数据库连接池连接MySQL

普通的数据库连接创建的缺点:

用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。

数据库连接池概念

所谓数据库连接池,可以看作 :在用户和数据库之间创建一个”池”,这个池中有若干个连接对象,当用户想要连接数据库,就要先从连接池中获取连接对象,然后操作数据库。一旦连接池中的连接对象被拿光了,下一个想要操作数据库的用户必须等待,等待其他用户释放连接对象,把它放回连接池中,这时候等待的用户才能获取连接对象,从而操作数据库。

下载C3P0工具包

C3P0工具包包含的版本:

c3p0-0.9.5.2

mchange-commons-java-0.2.11

c3p0-config.xml 的配置

**注意: ** xml 配置文件的名称必须是:c3p0-config.xml ,也是放在src 目录下

​这里的 jdbcUrl 比较容易出问题,要是出现问题,建议仔细找找。

com.mysql.jdbc.Driver

jdbc:mysql:///v20

root

123456

JdbcUtil.java

写一个封装的工具类,开发起来还不是美滋滋!

package com.register_mvc.utils;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import com.mchange.v2.c3p0.impl.DbAuth;

public class JdbcUtil {

// 创建 c3p0 连接池对象

static ComboPooledDataSource dataSource = new ComboPooledDataSource("v20");

//创建一个 ThreadLocal

static ThreadLocal th = new ThreadLocal();

/**

*getConn()

*获取conn

*/

public static Connection getConn() {

// 从连接池中获取连接

// 先从 th 中获取,如果为空再到连接池中获取

Connection conn = th.get();

if (conn == null) {

try {

//把 获取的conn 存到 ThreadLocal 中

// ThreadLocal 内部有个map

// 通过当前的 线程 作为 key value 是存的内容

// 统一线程 key一致 value值 肯定一致

conn = dataSource.getConnection();

//把 conn存到th中

th.set(conn);

} catch (SQLException e) {

e.printStackTrace();

}

}

return conn;

}

/**

* 利用泛型方法释放资源 rs,st,conn

*/

public static void closeAll(T... autos) {

for (AutoCloseable t : autos) {

if (t != null) {

try {

t.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值