前言
本人最近在学C3P0的时候发现其中的有些配置有些讲究,无论是记忆还是每次去编写都很麻烦,所以就在这里把配置文件和工具类给记下来,以便以后使用。
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///exam</property>
<property name="user">root</property>
<property name="password">heyadi</property>
<property name="initialPoolSize">5</property>//初始化连接池根据情况而定,一般也就3~10个差不多
<property name="maxPoolSize">100</property>//最大连接个数,我习惯设100,根据你需要的情况而定
<property name="minPoolSize">5</property>//最小连接数根据情况而定
<property name="maxIdleTime">0</property>//一般设置为0,就是不去抹去Connection,而是回收
<property name="maxStatementsPerConnection">0</property>//清理PreparedStatement缓存,我设置的不缓存
<property name="acquireRetryAttempts">30</property>//重新获取连接时候的尝试次数,超过了便不去再尝试获取连接
<property name="acquireRetryDelay">1000</property>//连接池在获得新连接时的间隔时间
</default-config>
</c3p0-config>
工具类
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3P0Utiles {
private static ComboPooledDataSource datasource = new ComboPooledDataSource();
//获取连接池
public static DataSource getdatasource()
{
return datasource;
}
//获取Connection
public static Connection getconnection(){
try {
return datasource.getConnection();
} catch (SQLException e) {
// 如果报错,则提示配置文件出错,后面没有必要执行,抛出Runtime异常
throw new RuntimeException(e);
}
}
//关闭Connection
public static void closeconn(Connection conn,ResultSet rs,PreparedStatement ps) throws SQLException {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//关闭连接池,关闭了连接池就不能再使用该池的方法了!!!!
public static void closepool() {
datasource.close();
}
}
配置文件一定要放在src文件夹下,我当时就放在包下,搞了好久才发现…真的长记性了。