JDBC连接池(数据源)
自定义连接池:用装饰设计模式将原连接的close方法改造成将连接还回数据源;装饰设计模式:http://www.cnblogs.com/tongxuping/p/6832518.html;
开源数据库连接池:
C3P0连接池:
基本步骤:
1.导入开发包
2.创建数据库连接池
ComboPooledDataSource cpds = new ComboPooledDataSource();
3.配置基本的连接信息
a) 通过setters方法来设置参数
b) 通过c3p0-config.xml文件来配置基本连接信息
c) 通过c3p0.properties文件来配置基本连接信息
示例代码:
package Pool; import java.sql.Connection;
import java.sql.PreparedStatement; import JDBCutils.JDBCutils; import com.mchange.v2.c3p0.ComboPooledDataSource; /*
* c3p0 是个开源是数据源
* c3p0被称为数据库链接池,用来管理数据库链接的获取和存储。
* 有两种写法:
* 方式一:在创建对象后直接设置JDBC的基本信息,如:数据库驱动,数据库url,登陆数据库用户名和密码;然后再对数据库操作
* 方式二:外建一个xml或者properties配置文件,存在配置文件时无需对数据库基本信息进行设置。直接获取数据库连接,对数据库相应的操作
*/
public class C3P0 {
public static void main(String[] args) { Connection conn = null;
PreparedStatement ps=null;
//通过ComboPooledDataSource获取dateSource即数据源,可从中获取数据库的链接。
ComboPooledDataSource pool = new ComboPooledDataSource();
//ComboPooledDataSource pool = new ComboPooledDataSource("config1");
/*
* 传参表示需要使用config1的配置信息为数据库操作信息
*/
try {
/*pool.setDriverClass("com.mysql.jdbc.Driver");
pool.setJdbcUrl("jdbc:mysql:///mydb5");
pool.setUser("root");
pool.setPassword("admin");*/ conn = pool.getConnection();
String sql="delete from tb_batch where id>?";
ps = conn.prepareStatement(sql);
ps.setInt(1, 20);
int rows = ps.executeUpdate();
System.out.println(rows); } catch (Exception e) {
e.printStackTrace();
}finally{
JDBCutils.closeResou(conn, ps, null);
}
}
}
XML配置:XML文件名必须为:c3p0-config.xml,否则都不到配置信息;name不能随意写。
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<!-- setting -->
<!-- c3p0默认读取这块 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///mydb5</property>
<property name="user">root</property>
<property name="password">admin</property>
</default-config> <named-config name="config1">
<!-- -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///mydb1</property>
<property name="user">admin</property>
<property name="password">123</property>
</named-config>
</c3p0-config>
Properties配置:
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql:///mydb1
c3p0.user=root
c3p0.password=root
JDBC连接池(数据源)的更多相关文章
- 四大流行的jdbc连接池之C3P0篇
C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSourc ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...
- JDBC连接池-C池3P0连接
JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版 c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池 三种方 ...
- JDBC连接池(三)DBCP连接池
JDBC连接池(三)DBCP连接池 在前面的随笔中提到 了 1.JDBC自定义连接池 2. C3P0连接池 今天将介绍DBCP连接池 第一步要导入jar包 (注意:mysql和mysql 驱动 ...
- 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)
-----------------------JDBC---------- 0. db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...
- JDBC连接池和DBUtils
本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...
- 利用jdbc连接池(利用jdni)
简介 前段时间用jdbc连接池,在这里记录下 1.利用jdni配置数据源 在Web项目的META-INF文件夹中新建context.xml文件,内容为: <?xml version=" ...
- 数据层优化-jdbc连接池简述、druid简介
终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...
- JDBC连接池-C3P0连接
JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版 c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池 三种方 ...
- 自定义一个简单的JDBC连接池
一.什么是JDBC连接池? 在传统的JDBC连接中,每次获得一个Connection连接都需要加载通过一些繁杂的代码去获取,例如以下代码: public static Connection getCo ...
随机推荐
- 使用PHP静态变量当缓存的方法
下面这个PHP的代码实例,功能是帮助用户重置密码,requestResetPassword是接收用户重置密码的请求并且做了相应的检查.为了更好的复用性,我将重置密码的操作单独分配到一个新的resetP ...
- LeetCode难度和面试频率(转)
转自:http://www.cnblogs.com/ywl925/p/3507945.html ID Question Diff Freq Data Structure Algorit ...
- sql in()批量操作
//批量修改 update 表A set A.name='n' where A.id in(字符串); //批量删除 delete from 表名称 where 列名称 ...
- 关于<meta http-equiv="Content-Type" content="text/html:charset=UTF-8">
meta是html的元标签,其中包含了对应html的相关信息,客户端浏览器或服务端程序都会根据这些信息进行处理.我们以<meta http-equiv="Content-Type&qu ...
- LeetCode -- 3SumCloset
Question: Given an array S of n integers, find three integers in S such that the sum is closest to a ...
- Codeforces 662C(快速沃尔什变换 FWT)
感觉快速沃尔什变换和快速傅里叶变换有很大的区别啊orz 不是很明白为什么位运算也可以叫做卷积(或许不应该叫卷积吧) 我是看 http://blog.csdn.net/liangzhaoyang1/ar ...
- [CF45G]Prime Problem
题目大意:将$1$到$n(1<n\leqslant6000)$分成若干组数,要求每组数的和均为质数,若存在一种分配方式,输出每个数所在的组的编号,有多组解输出任意一组解,若不存在,输出$-1$ ...
- [NOI.AC省选模拟赛3.30] Mas的童年 [二进制乱搞]
题面 传送门 思路 这题其实蛮好想的......就是我考试的时候zz了,一直没有想到标记过的可以不再标记,总复杂度是$O(n)$ 首先我们求个前缀和,那么$ans_i=max(pre[j]+pre[i ...
- JavaScript十大经典排序算法
排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序: 输入:n个数:a1,a2,a3,…,an输出:n个数的排列:a1’,a2’,a3’,…,an’,使得a1’ 再讲的形象点就是排排坐 ...
- MongoDB加索引
1.登陆MongoDB, 命令行在MongoDB主目录下执行:mongo -port 27017 2.切换至需要添加索引的db 并授权 use MeetingBooking db.auth({&quo ...