连接池时间长不用空闲着,dbcp是不回收的,性能可能有些问题。c3p0是可以自动回收。实际开发中c3p的生产力比dbcp强,性能上更强。
package cn.itcast.datasource; import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException; import org.junit.Test; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3p0Test { //手动
@Test
public void test1() throws PropertyVetoException, SQLException{
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.driver");
cpds.setJdbcUrl("jdbc:mysql:///day18");
cpds.setUser("root");
cpds.setPassword("");
//得到一个Connection
Connection con = cpds.getConnection();
ResultSet rs= con.createStatement().executeQuery("select * from account");
while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("name"));
} rs.close();
con.close();//将Connection对象重新装入到连接池.
} @Test
public void test2() throws SQLException{
ComboPooledDataSource cpds = new ComboPooledDataSource(); //得到一个Connection
Connection con = cpds.getConnection();
ResultSet rs= con.createStatement().executeQuery("select * from account");
while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("name"));
} rs.close();
con.close();//将Connection对象重新装入到连接池. String path= this.getClass().getResource("/").getPath();
System.out.println(path);//你在搜索时肯定能找到这个路径嘛 c3p0的底层直接找classpath路径 然后去找指定名称文件 名称是固定的
}
}
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///day18</property>
<property name="user">root</property>
<property name="password"></property> </default-config> </c3p0-config>