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();
}
}
}
}
}
c3p0 0.9.1.2 配套mysql_连接数据库,使用c3p0技术连接MySQL数据库相关推荐
- php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据
php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...
- php连接数据库语言,PHP语言连接MYSQL数据库实例代码
本文主要向大家介绍了PHP语言连接MYSQL数据库实例代码,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 现在做的项目需要php连接mysql数据库,虽然之前学过,但是现在基本上都给忘 ...
- lua连接数据库之luasql ------ luasql连接mysql数据库 及 luasql源码编译
lua连接数据库不只luasql这个库,但目前更新最快的的貌似是这个luasql,他是开源的,支持的数据库功能如下: Connect to ODBC, ADO, Oracle, MySQL, SQLi ...
- asp 连接mysql_如何在ASP中连接MySQL数据库
ASP和MySQL连接目前有两种办法:一个是使用组件,比较有名是MySQLX,可惜要99美元.二就是使用MyODBC 来连接,下面我们就来看看第二种方式. 试验的平台: MySQL 4.0 For R ...
- mysql连接数据库的包_java连接mysql数据库包
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python怎么连接数据库_python3.x怎么连接mysql数据库
第三步连接mysql数据库之后,就可以通过sql语句来读取数据库内容了,完整代码如下: import pymysql.cursor # 连接MySQL数据库 connection = pymysql. ...
- cakephp mysql_攻克CakePHP系列一 连接MySQL数据库
接下来将一步一步对这个框架进行说明. 首先是下载框架 官方主页:http://cakephp.org/ 下载地址:http://cakeforge.org/frs/?group_id=23&r ...
- python用django连接mysql_三分钟了解Django如何连接Mysql数据库
处理用户注册请求.Django连接MysqL数据库相关配置.数据库迁移命令: my_Dproject/app01/views.py 在views函数文件中添加register函数,来处理用户注册 ...
- pydev集成mysql_【Python】Windows平台下Python、Pydev连接Mysql数据库
Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb. Python连接Mysql数据库是非常easy的. 首先,你要配置好Python的开发环境,详见<[Python]Wi ...
最新文章
- CommonsMultipartFile 转为 File 类型
- 从十个方面提升SharePoint网站性能
- Codeforces 976F
- hadoop3.0.0 源码阅读之一:IPC Client部分
- HDU 2818 Building Block
- 使用xfire webservice接口开发,obj与xml相互转换好用工具类,不需要写大量的转换代码,亲测可用
- 漫步数学分析二十六——积分方程与不动点
- 报错,Error in created hook: “SyntaxError: Unexpected token o in JSON at position 1“
- 把github转至gitee
- 通向财务自由之路01_导读
- 【M1芯片兼容】MP3 Audio Recorder for Mac - MP3录音工具
- 人生苦短我用python(02)动态加载模块
- spss入门——简单的数据预处理到时间序列分析系列(一)
- 微信如何创建自己的小程序?
- PRML读书会第五章 Neural Networks(神经网络、BP误差后向传播链式求导法则、正则化、卷积网络)...
- filezilla,怎么下载filezilla
- C语言 switch多分支语句实现根据等级划分分数段
- 63 Three.js 将多个网格合并成一个网格
- 微信开发系列之自定义菜单实现
- luoguP3600 随机数生成器概率与期望Dp
热门文章
- 产品经理经验谈100篇(四)-B端交互设计规范
- 在地图上 添加柱状_如何做出一份惊艳的PPT地图页?这2个字,你一定要知道!...
- qt linux webservice,Qt实现访问WebService
- 解决 There are no resources that can be added or removed from the server
- 计算机考研数学基础知识点,2019计算机考研数学复习:打好基础是必须的啊喂!...
- fastd java下载_FastReport VCL报表控件
- JAVA确定这天是这年的某一天_[Java] 练习题014: 输入某年某月某日,判断这一天是这一年的第几天?...
- HTML5常用标签及特殊字符表
- 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等
- js正则验证方法大全