c3p0开源连接池的使用
第一、引入c3p0-0.9.1.2.jar 文件到项目。
下载地址
http://download.youkuaiyun.com/detail/qqahanson/8212789
例子
src
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class Demo1C3P0 {
//c3p0入门案例
@Test
public void test() throws Exception{
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
dataSource.setJdbcUrl( "jdbc:mysql:///jdbc" );
dataSource.setUser("root");
dataSource.setPassword("123456");
//其实返回的是真实conn的一个代理对象,其中的close方法已经被改变
Connection conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from account");
ResultSet rs = ps.executeQuery();
while(rs.next()){
String name = rs.getString("name");
System.out.println(name);
}
rs.close();
ps.close();
//根据之前讲的原理,此处的close方法没有真的关闭连接,而是把连接还回到了池中
conn.close();
}
//c3p0使用xml配置文件
@Test
public void test2()throws Exception{
ComboPooledDataSource dataSource = new ComboPooledDataSource("mySoruce");
//其实返回的是真实conn的一个代理对象,其中的close方法已经被改变
Connection conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from account");
ResultSet rs = ps.executeQuery();
while(rs.next()){
String name = rs.getString("name");
System.out.println(name);
}
rs.close();
ps.close();
//根据之前讲的原理,此处的close方法没有真的关闭连接,而是把连接还回到了池中
conn.close();
}
}
c3p0-config.xml 配置文件
<?xml version="1.0"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property >
<property name="jdbcUrl">jdbc:mysql:///jdbc</property >
<property name="user">root</property>
<property name="password">123456</property>
</default-config>
<!-- This app is massive! -->
<named-config name="mySoruce">
<property name="driverClass">com.mysql.jdbc.Driver</property >
<property name="jdbcUrl">jdbc:mysql:///jdbc</property >
<property name="user">root</property>
<property name="password">123456</property>
</named-config>
</c3p0-config>