自定义连接池:用装饰设计模式将原连接的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连接池(数据源)的更多相关文章

  1. 四大流行的jdbc连接池之C3P0篇

    C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSourc ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介

    日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...

  3. JDBC连接池-C池3P0连接

    JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版      c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池  三种方 ...

  4. JDBC连接池(三)DBCP连接池

    JDBC连接池(三)DBCP连接池 在前面的随笔中提到 了  1.JDBC自定义连接池  2. C3P0连接池 今天将介绍DBCP连接池 第一步要导入jar包   (注意:mysql和mysql 驱动 ...

  5. 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)

    -----------------------JDBC---------- 0.      db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...

  6. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...

  7. 利用jdbc连接池(利用jdni)

    简介 前段时间用jdbc连接池,在这里记录下 1.利用jdni配置数据源 在Web项目的META-INF文件夹中新建context.xml文件,内容为: <?xml version=" ...

  8. 数据层优化-jdbc连接池简述、druid简介

    终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...

  9. JDBC连接池-C3P0连接

    JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版      c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池  三种方 ...

  10. 自定义一个简单的JDBC连接池

    一.什么是JDBC连接池? 在传统的JDBC连接中,每次获得一个Connection连接都需要加载通过一些繁杂的代码去获取,例如以下代码: public static Connection getCo ...

随机推荐

  1. iMuseum

    iMuseum 每日环球展览 iMuseum https://itunes.apple.com/cn/app/%E6%AF%8F%E6%97%A5%E7%8E%AF%E7%90%83%E5%B1%95 ...

  2. WebService使用介绍(一)

    Socket实现 javaSocket通信原理 第一步:服务端创建serverSocket,启动服务.监听端口 /** * 天气查询服务端 * @author SMN * @version V1.0 ...

  3. number 解题报告

    number 题目描述 给定整数 \(m,k\),求出正整数 \(n\) 使得 \(n+1,n+2,-,2n\) 中恰好有 \(m\) 个数在二进制下恰好有 \(k\) 个 \(1\). 有多组数据. ...

  4. LwIP - 打开keepalive功能

    在服务器端打开keepalive功能 1.保证LWIP_TCP_KEEPALIVE被定义为1,(这样TCP_KEEPIDLE.TCP_KEEPINTVL和TCP_KEEPCNT 设置才有效) 2. i ...

  5. DIV的变高与变宽

    代码: <!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title&g ...

  6. oracle 数据库图形化工具 sqldeveloper

    1. 安装完成Oracle数据库,点击左下角[开始]菜单,在所有程序中打开[Oracle] 2. 在开始菜单,展开Oracle数据库,安装文件,然后打开[应用程序开发].可以看到[sqldevelop ...

  7. Java并发(6)- CountDownLatch、Semaphore与AQS

    引言 上一篇文章中详细分析了基于AQS的ReentrantLock原理,ReentrantLock通过AQS中的state变量0和1之间的转换代表了独占锁.那么可以思考一下,当state变量大于1时代 ...

  8. WIN8.1优化

    用WIN8.1至今,总结的所有优化的办法! 从Win7.Win8.1开始,微软为我们带来完善的系统服务.任务计划程序,这些都一定程度提升了日常使用,实现了“半自动化.半智能化”交互体验.但是对于高级用 ...

  9. system32下 exe文件作用

    system32下EXE文件的作用说明 A accwiz.exe 辅助功能向导 ahui.exe 应用程序兼容用户界面 alg.exe 为 Internet 连接共享和 Internet 连接防火墙提 ...

  10. wxpython布局管理部件wx.gridbagsizer用法示例

    text = ("This is text box")         panel = wx.Panel(self, -1)         chkAll1 = wx.CheckB ...