package cn.lfd.Utils;
import java.io.IOException;
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 JdbcUtils_dbcp {
private static DataSource ds;
static{
InputStream in = JdbcUtils_dbcp.class.getClassLoader().getResourceAsStream("dbcp.properties");//读取配置文件
Properties p = new Properties();
try {
p.load(in);//把配置文件加载到Properties中
ds = BasicDataSourceFactory.createDataSource(p);//用数据源工厂创造出数据源
} catch (IOException e) {
throw new ExceptionInInitializerError(e);//发生IO异常,抛出一个ExceptionInInitializerError
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//通过ds获取数据库连接
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
//释放资源
public static void release(Connection conn, Statement st, ResultSet rs) {
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(st!=null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
}
dbcp.properties文件:
#数据库驱动
driverClassName=com.mysql.jdbc.Driver
#数据库连接地址
url=jdbc:mysql://localhost:3306/test
#用户名
username=root
#密码
password=root
#连接池的最大数据库连接数。设为0表示无限制
maxActive=10
#最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制
maxIdle=5
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
maxWait=1000
#超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
removeAbandoned=true
#超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
removeAbandonedTimeout=180
注意事项:
1.所需jar包: commons-dbcp-1.4\commons-pool-1.4.jar commons-dbcp-1.4\commons-dbcp-1.4.jar mysql-connector-java-5.1.20-bin.jar
2.dbcp.properties文件需放在src目录下