方法一:

package C3P0;
import java.sql.Connection;
import java.sql.SQLException;
import java.beans.PropertyVetoException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBPool{       private static DBPool dbPool;       private ComboPooledDataSource dataSource;     static {       dbPool = new DBPool();       }       public DBPool(){       try {       dataSource = new ComboPooledDataSource();       dataSource.setUser("id");       dataSource.setPassword("pw");       dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test?
autoReconnect=true&useUnicode=true&characterEncoding=GB2312"); dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setInitialPoolSize(2); dataSource.setMinPoolSize(1); dataSource.setMaxPoolSize(10); dataSource.setMaxStatements(50); dataSource.setMaxIdleTime(60);       } catch (PropertyVetoException e) {       throw new RuntimeException(e);       }       }       public final static DBPool getInstance(){       return dbPool;       }       public final Connection getConnection(){       try {       return dataSource.getConnection();       }   catch (SQLException e)   {       throw new RuntimeException("无法从数据源获取连接",e);       }       }     public static void main(String[] args) throws SQLException { Connection con = null; try { con = DBPool.getInstance().getConnection(); } catch (Exception e){ } finally { if (con != null) con.close(); } } }

方法二:

c3p0方法:配置文件:c3p0-config.xml<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="userApp">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">20</property><!-- intergalactoApp adopts a different approach to
configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
<!-- he's important, but there's only one of him -->
<user-overrides user="master-of-the-universe">
<property name="acquireIncrement">1</property>
<property name="initialPoolSize">1</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">5</property>
<property name="maxStatementsPerConnection">50</property>
</user-overrides>
</named-config>
</c3p0-config>

连接数据库:package cn.langzi.jdbc.c3p0;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DbConnection {private static DataSource dataSource;static{dataSource = new ComboPooledDataSource("userApp");}public static Connection getConnectioon() throws SQLException{return dataSource.getConnection();}
}

方法三:

public final class ConnectionManager {private static ConnectionManager instance;public ComboPooledDataSource ds;private static String c3p0Properties = "c3p0.properties";private ConnectionManager() throws Exception {Properties p = new Properties();p.load(this.getClass().getResourceAsStream(c3p0Properties));ds = new ComboPooledDataSource();ds.setUser(p.getProperty("user"));ds.setPassword(p.getProperty("user"));ds.setJdbcUrl(p.getProperty("user"));ds.setDriverClass(p.getProperty("user"));ds.setInitialPoolSize(Integer.parseInt(p.getProperty("initialPoolSize")));ds.setMinPoolSize(Integer.parseInt(p.getProperty("minPoolSize")));ds.setMaxPoolSize(Integer.parseInt(p.getProperty("maxPoolSize")));ds.setMaxStatements(Integer.parseInt(p.getProperty("maxStatements")));ds.setMaxIdleTime(Integer.parseInt(p.getProperty("maxIdleTime")));}public static final ConnectionManager getInstance() {if (instance == null) {try {instance = new ConnectionManager();} catch (Exception e) {e.printStackTrace();}}return instance;}public synchronized final Connection getConnection() {try {return ds.getConnection();} catch (SQLException e) {e.printStackTrace();}return null;}protected void finalize() throws Throwable {DataSources.destroy(ds); // 关闭datasourcesuper.finalize();}
}

C3P0的三种使用方法相关推荐

  1. PHP开发之递归算法的三种实现方法

    递归算法对于任何一个编程人员来说,应该都不陌生.因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂.对于PHP新手来说,递归算法的实现原理可能不容易理解.但是只要你 ...

  2. 黑马程序员_Java解析网络数据流的三种特殊方法

    Java解析网络数据流的三种特殊方法 Java作为最开放的语言,已越来越受到网络程序员的青睐.但这一青睐族有着同样的经历--曾经都为网络上通信的Java数据格式而烦恼. 笔者也不例外,曾经为此而查阅了 ...

  3. Oracle的join默认为,Oracle中的三种Join方法详解

    这里将为大家介绍Oracle中的三种Join方法,Nested loop join.Sort merge join和Hash join.整理出来以便帮助大家学习. 基本概念 Nested loop j ...

  4. python中保留小数_python保留小数位的三种实现方法

    前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...

  5. oracle hash join outer,CSS_浅谈Oracle中的三种Join方法,基本概念 Nested loop join: Outer - phpStudy...

    浅谈Oracle中的三种Join方法 基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort mer ...

  6. lopa分析_【风险分析方法】HAZOP、LOPA和FMEA三种分析方法,如何做到信息共享?...

    导 读 信息是人们对事物的了解的不确定性的减少或消除,其功能是表征物质客体成分,结构,状态,特性等属性.信息共享的目的在于减少或消除信息源所需的不确定性.石油化工行业由于设备多,生产过程复杂,危险元素 ...

  7. php怎么四舍五入,php 四舍五入的三种实现方法

    这篇文章主要为大家详细介绍了php 四舍五入的三种实现方法,具有一定的参考价值,可以用来参考一下. 对php 四舍五入的三种方法感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! php 四 ...

  8. java map集合遍历方法,Java的Map集合的三种遍历方法

    集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 1. package com.myTest.MapText; import java.util.Collection; i ...

  9. for-forEach-stream.forEach三种遍历方法

    java8新出的循环方式,在网上有大量的道友说用流的方式效率反而更低了. 大量的结论表明,这种方式只是语法糖(for-forEach-stream三种遍历方法执行效率比较与选用思考 - ZZY1078 ...

最新文章

  1. 删除顺序表中所有的的重复数据
  2. SLAM中的卡尔曼滤波:究竟滤了谁?
  3. 队列的基本原理及实现
  4. WebForms 开发基础
  5. callback回调使用 vue_前端动画必知必会:React 和 Vue 都在用的 FLIP 思想实战
  6. html5 filereader读取文件,H5的FileReader分布读取文件应该如何使用以及其方法简介...
  7. windows系统上安装mysql操作过程及常见错误处理
  8. 【Kafka】kafka Java api 获取 kafka topic 或者 partition 占用的磁盘大小
  9. pip下载安装与环境配置
  10. 一般3d模型代做多少钱_重庆涪陵办一场婚宴一般需要多少钱?婚庆布置报价一般多少钱?...
  11. 如何一键重装电脑系统?在家里用电脑重装win10系统步骤
  12. CTFHub题解-技能树-Misc-流量分析-数据库类流量【MySQL流量、Redis流量、MongoDB流量】
  13. 分析和解决:ERR Error compiling script (new function): user_script:1: 'end' expected near '
  14. 你需要这样一个Ros软路由—— 路由器+外网+一号通ip线路=动态ip的WiFi信号
  15. 你的格局决定你的结局(胜读十年书)
  16. 随机画五角星,空心五角星
  17. 《金融行业应用解决方案白皮书》发布,金融自主创新未来可期!
  18. linux usb转并口,并口转usb驱动怎样安装的打印机完整图文详细教程
  19. 从零开始学习电子之电阻的标称和封装
  20. 转自“看雪论坛”--NtQuerySystemInformation

热门文章

  1. 在CSDN博客中添加Google Adsense等广告来赚钱
  2. 2018北京区域赛总结
  3. 工作流+BPM+BPMN
  4. 【时空序列预测第二篇】Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting
  5. 并发底层原理:线程、资源共享、volatile 关键字
  6. Android 开源项目及库汇总(2)
  7. 2012.4.29~2012.5.1平谷(二)
  8. react mvvm_SwiftUI与React式MVVM iOS架构
  9. 手机写python爬虫_可以写爬虫的那么多,为什么只有python火了?
  10. [ssh新闻发布系统五]删除新闻