import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPUtil {
private static DataSource dataSource;
//使用静态代码块,使驱动在调用工具类时就被加载,且只加载一次
static {
try {
//首先,创建Properties对象,用于加载properties配置文件
Properties prop = new Properties();
//获取dbcp配置文件输入流
InputStream inStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("dbcp.properties");
/*
* 注:配置文件中的key必须满足BasicDataSource
中的setter属性,即key的值为BasicDataSource中设置连接属性"setDriverClassName(str)等几个方法中的后半部分,
即driverClassName,Username,Url,Password以及InitialSize(连接池启动时创建的初始化连接数量)"*/
//加载配置文件
prop.load(inStream);
/*
使用BasicDataSourceFactory的静态方法createSource(prop),
通过已经加载了properties文件的prop对象创建DataSource连接池对象;*/
dataSource = BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
e.printStackTrace();
}
}
//返回Connection对象的方法
public static Connection getConnec() {
//使用DataSource的getConnection方法创建Connection对象
try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//关闭资源的方法,及其异常处理
public static void close(ResultSet rSet, Statement state, Connection connec) {
try {
if (rSet != null)
rSet.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (state != null)
state.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (connec != null)
connec.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}