【MySQL】mysql连接池( 四 )


测试代码(.java):
public class DruidApp {public static void main(String[] args) {MyDruid druid = MyDruid.getdruid();PreparedStatement pre = null;Connection connection = null;try {connection = druid.getConnection();String sql = "select * from student where SID > ?";pre = connection.prepareStatement(sql);pre.setString(1, "01");ResultSet resultSet = pre.executeQuery();while (resultSet.next()) {//hashnext next-1System.out.println("SID:" + resultSet.getString(1) +"SName:" + resultSet.getString(2)+ "SAge:" + resultSet.getString(3)+ "SSex:" + resultSet.getString(4));}} catch (Exception e) {e.printStackTrace();} finally {try {pre.close();connection.close();//将连接归还给链接池} catch (SQLException e) {e.printStackTrace();}}}}
dbcp
DBCP(pool)数据库连接池 。是上的一个 java连接池项目 , 也是 使用的连接池组件 。单独使用dbcp需要3个包:-dbcp.jar,-pool.jar,-.jar由于建立数据库连接是一个非常耗时耗资源的行为 , 所以通过连接池预先同数据库建立一些连接 , 放在内存中 , 应用程序需要建立数据库连接时直接到连接池中申请一个就行 , 用完后再放回去 。dbcp没有自动的去回收空闲连接的功能 。
1、DBCP常用配置参数介绍
参数
默认值
说明
url
数据库地址
数据库驱动类名
数据库用户名
数据库密码
连接池初始化时生成的连接数
连接池中保持的最小空闲连接数 , 
连接池中保持的最大空闲连接数 , 超过的空闲连接将被释放
连接池中支持的最大活动连接数
-1
当连接池中没有空闲连接时 , 最大的等待时间(毫秒)
检查连接是否可以的验证语句
true
借出连接时是否校验 , 默认校验 , 建议设置为false
false
归还连接时是否校验 , 默认不校验
false
空闲连接回收器是否校验空闲连接 , 默认不校验 , 建议设置为true,可以避免mysql数据库超时问题
-1
空闲连接回收器运行周期(毫秒) , 默认不运行
un
空闲连接回收器每次检测空闲连接数
1000*60*30
空闲连接回收器移除空闲连接的最小空闲连接 , 如果连接空闲了(毫秒)就移除
false
连接泄漏回收参数 , 当可用连接数少于3个时才执行 , (() < 2) and (() > () - 3)时被触发
ut
300
活动连接多久没被使用即视为 , 即连接泄漏(秒)
false
回收事件后 , 是否在log中打印出回收的错误信息 , 默认不打印
2、代码使用
DBCP依赖
commons-dbcpcommons-dbcp1.4
.java
public final class MyDBCP {private DataSource dataSource;private MyDBCP() {Properties pro = new Properties();FileInputStream is = null;dataSource = new BasicDataSource();try {is = new FileInputStream("D:\\Java\\上课代码\\jsp_demo\\src\\main\\resources\\dbcp.properties");pro.load(is);// 创建了一个DBCP数据库连接池dataSource = BasicDataSourceFactory.createDataSource(pro);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}private static class Holder {private static MyDBCP dbcp = new MyDBCP();}public static MyDBCP getDbcp() {return Holder.dbcp;}public Connection getConnection() throws Exception {Connection conn = dataSource.getConnection();return conn;}}
测试代码(.java):