这里只记录c3p0的数据源,不会涉及到其它方面和别的数据库连接池的对比

配置文件主要的实现方式有三种:

1.手写代码去加载一个配置文件

创建一个config.properties文件如下:

driverClass= com.mysql.jdbc.Driver
jdbcUrl = jdbc:mysql://127.0.0.1:3306/soc_db?autoReconnect=true&autoReconnectForPools=true
user = root
password = root
......

然后在java代码中:

     public void closeInputStream(InputStream inputStream){
if(inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} public InputStream loadResource(String resource) {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
if (in == null) {
in = PropertiesUtil.class.getResourceAsStream(resource);
}
return in;
} public Properties getProperties(String resource){
LOG.debug("[Method] 读取数据库配置信息");
Properties properties = new Properties();
InputStream in = null;
try {
in = loadResource(resource);
if(in!=null){
properties.load(in);
}
} catch (IOException e) {
LOG.error("load properties error",e);
}finally {
closeInputStream(in);
}
LOG.debug(properties.getProperty("url"));
return properties;
}
             Properties properties = PropertiesUtil.getInstance().getProperties("/resource/jindun.properties");
c3p0DataSource.setDriverClass(properties.getProperty("driverClass"));
c3p0DataSource.setDriverClass(properties.getProperty("jdbcUrl"));
c3p0DataSource.setDriverClass(properties.getProperty("user"));
c3p0DataSource.setDriverClass(properties.getProperty("password"));
......

2.在src下创建一个c3p0.properties文件(固定名字哦)

c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://10.30.79.10:3306/test
c3p0.user=root
c3p0.password=root
......
 ......
ComboPooledDataSource c3p0DataSource = new ComboPooledDataSource()
......

这样就可以直接使用了,不需要再去说明。
3.在src下创建一个c3p0-config.xml文件

(1)XML格式更加直观

(2)可以在文件中配置多个数据源

<c3p0-config>
<default-config>
<property name="user">root</property>
<property name="password">root</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test</property> <property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">500</property> <!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property> </default-config> <!-- This app is jindun -->
<named-config name="jinDunApp">
<property name="user">root</property>
<property name="password">root</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://10.30.79.10:3306/HrINetDB?autoReconnect=true&amp;autoReconnectForPools=true</property> <property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">500</property> <!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property> </named-config> <!-- This app is Tianji -->
<named-config name="tianJiApp">
<property name="user">root</property>
<property name="password">root</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://10.30.67.95:3306/config_db?autoReconnect=true&amp;autoReconnectForPools=true</property> <property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">500</property> <!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property> </c3p0-config>
     public static void main(String[] args) {
// 默认配置
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
// 固定名字配置
ComboPooledDataSource comboPooledDataSource2 = new ComboPooledDataSource("jinDunApp");
// 数据源使用
PreparedStatement psta;
ResultSet rs;
try {
// 这个的comboPooledDataSource改comboPooledDataSource2就执行jinDunApp配置了
Connection conn = comboPooledDataSource.getConnection();
psta = conn.prepareStatement("SELECT empName FROM t_sc_usermanager");
rs = psta.executeQuery();
while (rs.next() ){
System.out.println(rs.getString(1) + "\n");
}
} catch (SQLException e) {
e.printStackTrace();
}
}

上面就是一个实例。

  配置的参数列表如下(具体含义可以查看参考资料):

参考资料:

http://haoran-10.iteye.com/blog/1753332

http://www.mchange.com/projects/c3p0/#c3p0-config.xml

数据库连接池c3p0学习的更多相关文章

  1. 数据库连接JDBC和数据库连接池C3P0自定义的java封装类

    数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...

  2. 数据库连接池 c3p0 druid

    druid 数据库连接池 c3p0 使用C3P0数据源时需要依赖 mchange-commons-java-0.2.3.4.jar包.缺少该jar包则会报错!

  3. 数据库连接池——C3P0&Druid(快速入门)

    数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...

  4. java学习笔记41(数据库连接池 C3p0连接池)

    在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...

  5. [数据库连接池二]Java数据库连接池--C3P0和JDNI.

    前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规 ...

  6. 数据库连接池 c3p0 demo 代码和分析

    import java.sql.Connection; import java.sql.SQLException; import java.beans.PropertyVetoException; i ...

  7. 数据库连接池c3p0和dbcp

    现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样 ...

  8. 数据库连接池 C3p0

    数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...

  9. JAVA数据库连接池C3p0 以及阿里Druid提供的连接池

    一:连接池的定义 本质上就是个容器(集合) 存放数据库连接的容器,当系统初始化后,容器被创建,容器中就会申请一些连接对象,当用户来访问数据库的时候,从容器中取连接对象,用户用完之后,归还. 二:常用的 ...

随机推荐

  1. vue.js开发环境搭建

    1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...

  2. p/invoke碎片--对数组的封送处理

    因为数组是引用类型,所以数组的处理根据数组元素的类型是否为“可直接传递到非托管代码”的类型而分为两种情况.主要目标是看内存是怎么变化的,是复制还是锁定. 数组中的元素是"可直接传递到非托管代 ...

  3. svn 图标不显示

    1.判断注册表里面是否有 SVN图标信息 方法:输入:win+R,输入regedit,调出注册表信息,按下Ctrl+F,在注册表里搜索"ShellIconOverlayIdentifiers ...

  4. Mysql字符集设置

    转 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等:• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encodi ...

  5. c++ 在windows下获取时间和计算时间差的几种方法总结

    http://blog.csdn.net/caimagic/article/details/50696609 我用的是GetTickCount(), 获取到的是毫秒.

  6. Jquery制作--循环滚动列表

    自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可 ...

  7. 百度API城市代码CityCode官方文档

    100 拉萨市101 那曲地区102 日喀则地区103 阿里地区104 昆明市105 楚雄彝族自治州106 玉溪市107 红河哈尼族彝族自治州108 普洱市109 西双版纳傣族自治州110 临沧市11 ...

  8. bzoj4692: Beautiful Spacing

    先二分答案后dp 设\(su[n]\)为\(\sum_{1}^{n}xi[i]\) 设\(f[n]\)为1时表示第n个单次能做某一行的结尾,且之前的空格满足二分出来的答案. 考虑怎样的\(f[i]\) ...

  9. Python 2/3 安装与运行环境设置

    Python 2/3 安装与运行环境设置: 1.Python 软件源:https://www.python.org/    下载Win版本 https://www.python.org/downloa ...

  10. 开刷LeetCode

    还是觉得自己在算法这块太弱鸡了 不多废话开刷吧,LeetCode与算法导论相辅相成双管齐下,期望能填上算法这个坑 解法没意外都是用Python2.7 由于LeetCode有提供Top Solution ...