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();

}

}

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hadoop】Hadoop MR 自定义分组 Partition机制

1、概念 2、Hadoop默认分组机制--所有的Key分到一个组,一个Reduce任务处理 3、代码示例 FlowBean package com.ares.hadoop.mr.flowgroup;import java.io.DataInput; import java.io.DataOutput; import java.io.IOException;import org.apache.hadoop.io.WritableC…

Spring Framework 3.2 M1发布

SpringSource刚刚宣布了针对Spring 3.2的第一个里程碑版本。 现在可以从SpringSource存储库(位于http://repo.springsource.org/)获得新版本。 查看有关通过Maven 解决这些工件的快速教程 。 此版本包括: 最初支持异步Controller方法 早期…

两种动态SQL

参考:http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.htmlhttp://www.cnblogs.com/xbf321/archive/2008/11/02/1325067.html 两种动态SQL  1. EXEC (sql)   2. EXEC sp_executesql 性能:sp_executesql提供了输入输出接口,更…

mysql查询含有某个值的表_MYSQL查询数据表中某个字段包含某个数值

当某个字段中字符串是"1,2,3,4,5,6"或者"123456" 查询数据表中某个字段是否包含某个值 1:模糊查询 使用like select * from 表 where 字段 like %1%; 2:函数查找 find_in_set(str,数组) select * from 表 where find_in_set(1,字段); 注意:mysql字符串…

android学习笔记35——AnimationDrawable资源

AnimationDrawable资源 AnimationDrawable,代表一个动画。 android既支持传统的逐帧动画(类似于电影方式,一张图片一张图片的切换),也支持通过平移、变换计算出来的补间动画、属性动画。 下面以补间动画为例,介绍如何定义Animatio…

RESTEasy教程第2部分:Spring集成

RESTEasy提供了对Spring集成的支持&#xff0c;这使我们能够将Spring bean作为RESTful WebServices公开。 步骤&#xff03;1&#xff1a;使用Maven配置RESTEasy Spring依赖项。 <project xmlnshttp:maven.apache.orgPOM4.0.0 xmlns:xsihttp:www.w3.org2001XMLSchema-insta…

java RSA 加签验签【转】

引用自: http://blog.csdn.net/wangqiuyun/article/details/42143957/ java RSA 加签验签 package com.testdemo.core.service.impl.alipay;import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.PK…

mysql启动时执行sql server_常见 mysql 启动、运行.sql 文件错误处理

1、mysql 启动错误处理查看 log&#xff1a;Mac: /usr/local/var/mysql/lizhendeMacBook-Pro.local.err根据 log 针对性的进行调整&#xff0c;包治百病2、Mysql Incorrect datetime value问题描述&#xff1a;低版本的 mysql 中&#xff0c;数据库转储 sql 文件。导入到高版本…

带有谓词的Java中的函数样式-第2部分

在本文的第一部分中&#xff0c;我们介绍了谓词&#xff0c;这些谓词通过具有返回true或false的单个方法的简单接口&#xff0c;为Java等面向对象的语言带来了函数式编程的某些好处。 在第二部分和最后一部分中&#xff0c;我们将介绍一些更高级的概念&#xff0c;以使您的谓词…

Devxtreme 显示Master-Detail数据列表, 数据显示颜色

1 ////刷新3/4簇Grid2 //function GetClusterGrid(id, coverageId, clusterId) {3 4 // var region getRegionCityName();5 // $.ajax({6 // type: "POST",7 // url: "fast_index_overview.aspx/GetClusterGrid&q…

mysql 排序去重复_php mysql 过滤重复记录并排序

table1idname1a2b3ctable2idnamecont1aaa2bbb3aaaaaSELECT*,count(distincttable2.name)FROMtable1,table2WHEREtable1.nametable2.nameGROUPBYtable2.nameORDERBYtable2.idDESC";重复...table1id name1 a2 b3 ctable2id name cont1 a aa2 b bb3 a aaaaSELECT *,count(dis…

Java EE 6测试第I部分– EJB 3.1可嵌入API

我们从Enterprise JavaBeans开发人员那里听到的最常见的请求之一就是需要改进的单元/集成测试支持。 EJB 3.1 Specification引入了EJB 3.1 Embeddable API&#xff0c;用于在Java SE环境中执行EJB组件。 与传统的基于Java EE服务器的执行不同&#xff0c;可嵌入式用法允许客户端…

Flume 中文入门手冊

原文&#xff1a;https://cwiki.apache.org/confluence/display/FLUME/GettingStarted 什么是 Flume NG? Flume NG 旨在比起 Flume OG 变得明显更简单。更小。更easy部署。在这样的情况下&#xff0c;我们不提交Flume NG 到 Flume OG 的后向兼容。当前。我们期待来自感兴趣測试…

原生JavaScript+CSS3实现移动端滑块效果

在做web页面时&#xff0c;无论PC端还是移动端&#xff0c;我们会遇到滑块这样的效果&#xff0c;可能我们往往会想着去网上找插件&#xff0c;其实这个效果非常的简单&#xff0c;插件代码的的代码往往过于臃肿&#xff0c;不如自己动手&#xff0c;自给自足。首先看一下效果图…

mysql的连接名是哪个文件_mysql连接名是什么

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

Activiti绩效对决

每个人在学习Activiti时都会一直问到的问题&#xff0c;与软件开发本身一样古老&#xff1a;“它如何执行&#xff1f;”。 到现在为止&#xff0c;当您问我同样的问题时&#xff0c;我将告诉您Activiti如何以各种可能的方式最小化数据库访问&#xff0c;如何将流程结构分解为“…

怎么使用CKEDITOR

出于工作需求&#xff0c;自己在网上找了个文本编辑器控件, 网址是http://ckeditor.com/ 怎么使用&#xff1f; 先插入脚本<script type"text/javascript" src"*/ckeditor.js"></script>, 然后&#xff0c;在自己的脚本里调用CKEDITOR.replac…

centos 打开pdo_mysql_centos中添加php扩展pdo_mysql步骤

pdo_mysql是php中一个mysql连接类了&#xff0c;我们可以直接使用pdo_mysql来操作数据库这样自己可以不需要写数据库操作类了&#xff0c;下面来介绍在centos中安装pdo_mysql扩展的步骤。本文内容是以 CentOS 为例&#xff0c;红帽系列的 Linux 方法应该都是如此&#xff0c;下…

Java线程死锁–案例研究

本文将描述从在IBM JVM 1.6上运行的Weblogic 11g生产系统中观察到的最新Java死锁问题的完整根本原因分析。 此案例研究还将证明掌握线程转储分析技能的重要性&#xff1b; 包括用于IBM JVM Thread Dump格式。 环境规格 – Java EE服务器&#xff1a;Oracle Weblogic Server 1…

bzoj1968: [Ahoi2005]COMMON 约数研究

水题。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define rep(i,s,t) for(int is;i<t;i) int main(){int ans0,n;scanf("%d",&n);rep(i,1,n) ansn/i;printf("%d\n…