这里只记录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. 博文Contents<201--到000—>

    ====================================--------------------------------- 前言:博客中的随笔文章.并非都是笔者的原创文章.有些是听别人 ...

  2. MVC中使用[ValidateAntiForgeryToken]防止CSRF 注入攻击

    CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF.通俗的理 ...

  3. thinkphp模型

    1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ...

  4. errored out in DoExecute, couldn't PrepareToExecuteJITExpression

    error: Couldn't materialize struct: size of variable <varName> disagrees with the ValueObject' ...

  5. CSS样式收集

    1.改变浏览器滚动条样式(适合webkit内核,摘自www.webhek.com/scrollbar) ::-webkit-scrollbar{width:2px;} ::-webkit-scroll ...

  6. MySQL模糊搜索的四种用法

    1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '% ...

  7. php、前端开发(网站建设)环境搭建

    php集成开发环境wampserver,是一款免费开源的软件,下载地址http://www.wampserver.com,由于是国外的网站,打开速度慢,根据自己的电脑选择32位/64位的系统下载.

  8. php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

    PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加 ...

  9. Python中两种处理错误方法的比较

    我所说的处理错误的方法,其实是try:,except和raise这两种. 首先抛出一个实例, dictt={'a':1,'b':2,'c':3} try: if dictt['d']>1: #字 ...

  10. Android Notification通知详解

    根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时 ...