JDBC连接池(三)DBCP连接池

JDBC连接池(三)DBCP连接池

在前面的随笔中提到 了  1.JDBC自定义连接池  2. C3P0连接池   

今天将介绍DBCP连接池

第一步要导入jar包   (注意:mysql和mysql 驱动的版本问题  ,驱动过低会造成下图异常)

 

创建db.properties 配置文件

DBCPUtils.java 文件

 1 package com.study.jdbc.Utils;
 2 
 3 import java.io.InputStream;
 4 import java.sql.Connection;
 5 import java.sql.SQLException;
 6 import java.util.Properties;
 7 
 8 import javax.sql.DataSource;
 9 
10 import org.apache.commons.dbcp.BasicDataSourceFactory;
11 
12 public class DBCPUtils {
13 
14     private static DataSource dataSource;
15     static{
16         
17         try {
18             InputStream is=DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
19             Properties props=new Properties();
20             props.load(is);
21             //创建数据源
22             System.out.println(props.getProperty("driver"));
23             dataSource=BasicDataSourceFactory.createDataSource(props);
24             System.out.println(dataSource);
25         } catch (Exception e) {
26             throw new RuntimeException(e);
27         }
28         
29     }
30     public static DataSource getDataSource(){
31         return dataSource;
32     }
33     public static Connection getConnection(){
34         
35         try {
36             return dataSource.getConnection();
37         } catch (SQLException e) {
38             throw new RuntimeException(e);
39         }
40     }
41 }

TestDBCP.java

package cn.itheima.jdbc.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;

import cn.itheima.jdbc.utils.DBCPUtils;

public class TestDBCP {

    @Test
    public void test1(){
        Connection conn=null;
        PreparedStatement pstm=null;
        ResultSet rs=null;
        try {
            conn=DBCPUtils.getConnection();
            String sql="select * from user";
            pstm=conn.prepareStatement(sql);
            rs=pstm.executeQuery();
            while(rs.next()){
                System.out.print(" userId ="+rs.getObject("userId")+"   ");
                System.out.println(" userName ="+rs.getObject("userName"));
                
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        
    }
    
    public static void main(String[] args) {
        Connection conn=null;
        PreparedStatement pstm=null;
        ResultSet rs=null;
        try {
            conn=DBCPUtils.getConnection();
            String sql="select * from user";
            pstm=conn.prepareStatement(sql);
            rs=pstm.executeQuery();
            while(rs.next()){
                System.out.print(" userId ="+rs.getObject("userId")+"   ");
                System.out.println(" userName ="+rs.getObject("userName"));

            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        
    }
}
原文地址:https://www.cnblogs.com/shaoxiaohuan/p/7763390.html