1、下载c3p0-0.9.1.2.jar

下载地址:http://download.csdn.net/detail/chunxiaqiudong5/9661922

2、添加配置文件c3p0-config.xml

3、配置文件内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <c3p0-config>
  3. <!-- This is default config! -->
  4. <default-config>
  5. <property name="initialPoolSize">10</property>
  6. <property name="maxIdleTime">30</property>
  7. <property name="maxPoolSize">100</property>
  8. <property name="minPoolSize">10</property>
  9. <property name="maxStatements">200</property>
  10. </default-config>
  11. <!-- This is my config for mysql-->
  12. <named-config name="mysql">
  13. <property name="driverClass">com.mysql.jdbc.Driver</property>
  14. <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF8</property>
  15. <property name="user">root</property>
  16. <property name="password"></property>
  17. <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->
  18. <property name="initialPoolSize">10</property>
  19. <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 -->
  20. <property name="maxIdleTime">30</property>
  21. <!--连接池中保留的最大连接数。默认值: 15 -->
  22. <property name="maxPoolSize">100</property>
  23. <!-- 连接池中保留的最小连接数,默认为:3-->
  24. <property name="minPoolSize">10</property>
  25. <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0-->
  26. <property name="maxStatements">200</property>
  27. <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 -->
  28. <property name="checkoutTimeout" value="3000"/>
  29. <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 -->
  30. <property name="acquireIncrement" value="2"/>
  31. <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次-->
  32. <property name="acquireRetryAttempts" value="0"/>
  33. <!--重新尝试的时间间隔,默认为:1000毫秒-->
  34. <property name="acquireRetryDelay" value="1000" />
  35. <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 -->
  36. <property name="autoCommitOnClose">false</property>
  37. <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null -->
  38. <property name="automaticTestTable">Test</property>
  39. <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false-->
  40. <property name="breakAfterAcquireFailure">false</property>
  41. <!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->
  42. <property name="idleConnectionTestPeriod">60</property>
  43. <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 -->
  44. <property name="maxStatementsPerConnection"></property>
  45. </named-config>
  46. <!-- This is my config for oracle -->
  47. <named-config name="oracle">
  48. <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
  49. <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>
  50. <property name="user">scott</property>
  51. <property name="password">liang</property>
  52. <property name="initialPoolSize">10</property>
  53. <property name="maxIdleTime">30</property>
  54. <property name="maxPoolSize">100</property>
  55. <property name="minPoolSize">10</property>
  56. <property name="maxStatements">200</property>
  57. </named-config>
  58. </c3p0-config>

4、连接池连接类

  1. package com.xxx.utils;
  2. import java.sql.Connection;
  3. import java.sql.SQLException;
  4. import javax.sql.DataSource;
  5. import com.mchange.v2.c3p0.ComboPooledDataSource;
  6. public class JDBCUtil {
  7. private static DataSource dataSource=null;
  8. static{
  9. dataSource=new ComboPooledDataSource("mysql");
  10. }
  11. /**
  12. * 获取数据库连接
  13. * @return
  14. */
  15. public static Connection getConnection(){
  16. Connection conn=null;
  17. try {
  18. conn=dataSource.getConnection();
  19. } catch (SQLException e) {
  20. e.printStackTrace();
  21. }
  22. return conn;
  23. }
  24. /**
  25. * 关闭数据库连接
  26. * @param conn
  27. */
  28. public static void closeConn(Connection conn){
  29. try {
  30. if(conn!=null && conn.isClosed()){
  31. conn.close();
  32. }
  33. } catch (SQLException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. }

5、测试

  1. package com.xxx.test;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import org.junit.Test;
  7. import com.xxx.utils.JDBCUtil;
  8. public class TestJdbc {
  9. @Test
  10. public void test() {
  11. Connection conn=JDBCUtil.getConnection();
  12. System.out.println(conn);
  13. try {
  14. PreparedStatement stmt=conn.prepareStatement("select * from tb_user");
  15. ResultSet re=stmt.executeQuery();
  16. while(re.next()){
  17. String name=re.getString(2);
  18. System.out.println(name);
  19. }
  20. } catch (SQLException e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. }
  24. }
  25. }

C3P0连接池的配置与使用的更多相关文章

  1. C3P0连接池详细配置

    C3P0连接池详细配置 转自http://msq.javaeye.com/blog/60387 <c3p0-config> <default-config> <!--当连 ...

  2. Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate

    连接池可以大大提高数据库的性能和连接速度,将那些已连接的数据库连接存放在一个连接池里,以后别人要连接数据库的时候,将不会重新建立数据库连接,直接从连接池中取出可用的连接,用户使用完毕后,会释放连接重新 ...

  3. Spring之c3p0连接池xml配置和使用举例

    1.导入jar包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.11.jar 2.源码: beans.xml <beans xmlns="http ...

  4. Hibernate的配置中,c3p0连接池相关配置

    一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...

  5. Spring中c3p0连接池的配置 及JdbcTemplate的使用 通过XML配置文件注入各种需要对象的操作 来完成数据库添加Add()方法

    通过配置文件XML方法的配置 可以使用非常简练的Service类 UserService类代码如下: package com.swift; public class UserService { pri ...

  6. C3P0连接池参数配置

    <!--acquireIncrement:链接用完了自动增量3个. --> <property name="acquireIncrement">3</ ...

  7. C3P0连接池属性配置注释

    属性 解释 acquireIncrement 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 默认为:3 acquireRetryAttempts 定义在从数据库获取新连接失败后重复尝试的次数 ...

  8. c3p0连接池基本配置mysql和oracle

    c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> ...

  9. C3P0连接池在hibernate和spring中的配置

    首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...

随机推荐

  1. .net reflector+reflexil修改编译后的dll文件

    1.用reflector打开相关的dll文件. 2.如果reflector中没有reflexil插件,点击工具栏中的Tools->Add-Ins 3.找到需要修改的文件,双击打开该文件:点击To ...

  2. JS 计算时间差,(引入外部字体文件)

    JavaScript Date() 对象: new Date() :时间对象,会把当前时间作为其初始值: setFullYear() :用于设置月份,可有三个参数,setFullYear(year,m ...

  3. C++笔记(1)----此运算符函数的参数太多

    在VS2015中定义了这样一个类: #include<iostream> #include<vector> #include<string> using names ...

  4. Netty高性能web框架

    框架背景: 前期为公司项目做全链路压测,发现公司跑到tomcat上的服务,即使是最简单的方法QPS也就到3000左右,后期查询发现可能和tomcat的业务逻辑有关. 因为以前在项目开发中用netty做 ...

  5. Lua 5.3 参考手册

    转自:http://www.runoob.com/manual/lua53doc/manual.html 1 – 简介 Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设 ...

  6. Python问题1:IndentationError:expected an indented block

    Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的python程序员,也可能陷入陷阱当中.最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分 ...

  7. centos 卸载python和yum之后的解决办法

    网上看到有同学yum不能使用的消息,出现了下面的结果 无赖的使用了网上的很多方法,还是不行. 于是我卸载了python和yum,觉得自己重新安装python和yum. 步骤1:卸载python rpm ...

  8. 第二课,DOS常用命令及进制转换

    课后的一点小总结还望各位大神点评. 注意事项:1.不要在c盘进行操作. 2.要注意路径. 3.要熟练掌握DOS命令 操作指令(.在本文代表空格,本次以文档为例) 打开DOS:窗口键+r  输入cmd ...

  9. Python学习---网络编程 1217【all】

    OSI七层模型: 物理层, 数据链路层, 网络层,传输层,会话层,表达层,应用层 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 传输层:TCP,UDP 网络层:I ...

  10. 沉淀再出发:jetty的架构和本质

    沉淀再出发:jetty的架构和本质 一.前言 我们在使用Tomcat的时候,总是会想到jetty,这两者的合理选用是和我们项目的类型和大小息息相关的,Tomcat属于比较重量级的容器,通过很多的容器层 ...