使用c3p0创建连接池

原创 2013年12月01日 23:41:54

使用C3P0创建连接池需要的jar包:

c3p0-0.9.2-pre1.jar
mchange-commons-0.2.jar
c3p0-oracle-thin-extras-0.9.2-pre1.jar //oracle 数据库还需要此jar包

使用此C3P0创建连接池有两种方式,一个是不基于配置文件的,直接在代码中写死。另外一中是基于配置文件的方法,配置文件,可以是xml文件(c3p0-config.xml),properties文件(c3p0.properties),这些文件必须在classloader resource 目录下。即SRC目录下,或者是指定系统属性(System properties)。示例如下:

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcC3p0Pools {
//方法一;通过代码中直接写死,不灵活
public static Connection getConnection() throws SQLException {
try {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc");
ds.setUser("root");
ds.setPassword("850828");
ds.setMaxPoolSize(40);
ds.setMinPoolSize(10);
ds.setInitialPoolSize(20);

Connection conn = ds.getConnection();
return conn;
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}

}
//使用xml配置文件,此xml
public static Connection getConnection2() throws SQLException{
ComboPooledDataSource ds = new ComboPooledDataSource("wl");
return ds.getConnection();
}
public static void release(Connection conn, Statement st, ResultSet rs){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rs = null;
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
st = null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
}
}
}

XML配置很灵活,可以为多个应用进行数据配置。在获取连接时,可以指定特定的配置。同时支持一个默认配置,要是没找到指定配置,将使用默认配置。

c3p0-config.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置-->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
<property name="user">root</property>
<property name="password">root</property>

<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
<!--mysql使用此配置 -->
<named-config name="mysql">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property>
<property name="user">root</property>
<property name="password">root</property>

<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">20</property>
</named-config>

<!-- orcale 配置-->
<named-config name="oracle">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
<property name="user">root</property>
<property name="password">root</property>

<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">20</property>
</named-config>
</c3p0-config>


//示例:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.Test;
import cn.itcast.utils.JdbcC3p0Pools;

public class Demo5 {

private Connection conn = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
private String sql = null;


@Test
public void query(){
try{ 
// conn = JdbcC3p0Pools.getConnection();
conn = JdbcC3p0Pools.getConnection2();

sql = "select name, money from account";
ps = conn.prepareStatement(sql);

rs = ps.executeQuery();
while(rs.next()){
System.out.print("name:"+rs.getString("name"));
System.out.println("--money:"+rs.getFloat("money"));
}

}catch(Exception e){
e.printStackTrace();
}
finally{
JdbcC3p0Pools.release(conn, ps, rs);
}
}
}


相关文章推荐

c3p0连接池的使用

  • 2015年01月30日 16:05
  • 2.46MB
  • 下载

DBCP、C3P0,JNDI 连接池配置使用

  • 2012年05月18日 17:34
  • 1.76MB
  • 下载

ssh 中使用c3p0 的连接池配置

applicationContext.xml 文件:

c3p0连接池使用所需jar包

  • 2017年08月18日 18:17
  • 1.56MB
  • 下载

连接池与数据源:DBCP以及C3P0的使用

连接池与数据源:DBCP以及C3P0的使用一、连接池的概念和使用在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必...
  • YYYQYYY
  • YYYQYYY
  • 2017年08月02日 11:25
  • 169

c3p0连接池配置使用

  • 2008年06月03日 09:12
  • 538KB
  • 下载

S2SH使用注解整合,以及c3p0连接池

  • 2011年05月23日 15:00
  • 14.95MB
  • 下载

mysql笔记八——开源数据库连接池DBCP和C3P0的使用

DBCP数据库连接池 DBCP 是 Apache 软件基金组织下的开源连接池实现,使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件: Commons-dbcp.jar:连接池的实现 ...

C3P0和dbutils数据库连接池封装的使用(二)

整理完c3p0以后,接下来就是导入dbutils的包了,首先附上dbutils的下载资源:http://pan.baidu.com/s/1bz80Ei,下载以后,解压,然后把commons-dbuti...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用c3p0创建连接池
举报原因:
原因补充:

(最多只允许输入30个字)