|NO.Z.00095|——————————|BigDataEnd|——|Java&MySQL.数据库连接池和DBUtils.V04|——|MySQL.v04|DBCP连接池工具类编写|

一、DBCP 连接池工具类编写
### --- 编写工具类

——> 连接数据库表的工具类, 采用DBCP连接池的方式来完成
——> Java 中提供了一个连接池的规则接口 : DataSource , 它是java 中提供的连接池
——> 在DBCP包中提供了DataSource接口的实现类,我们要用的具体的连接池 BasicDataSource

二、代码示例
public class DBCPUtils {
    //1. 定义常量 保存数据库连接的相关信息
    public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/db5?characterEncoding=UTF-8";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "123456";
    //2. 创建连接池对象 (有 DBCP 提供的实现类)
    public static BasicDataSource dataSource = new BasicDataSource();
    //3. 使用静态代码块进行配置
    static{
        dataSource.setDriverClassName(DRIVERNAME);
        dataSource.setUrl(URL);
        dataSource.setUsername(USERNAME);
        dataSource.setPassword(PASSWORD);
    }
    //4. 获取连接的方法
    public static Connection getConnection() throws SQLException {
    <span class="hljs-comment">//从连接池中获取连接</span>
    <span class="hljs-type">Connection</span> <span class="hljs-variable">connection</span> <span class="hljs-operator">=</span> dataSource.getConnection();
    <span class="hljs-keyword">return</span> connection;
}

<span class="hljs-comment">//5.释放资源方法</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">close</span><span class="hljs-params">(Connection con, Statement statement)</span>{
    <span class="hljs-keyword">if</span>(con != <span class="hljs-literal">null</span> &amp;&amp; statement != <span class="hljs-literal">null</span>){
        <span class="hljs-keyword">try</span> {
            statement.close();
            <span class="hljs-comment">//归还连接</span>
        con.close();
     } <span class="hljs-keyword">catch</span> (SQLException e) {
            e.printStackTrace();
        }
   }
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">close</span><span class="hljs-params">(Connection con, Statement statement, ResultSet resultSet)</span>{
    <span class="hljs-keyword">if</span>(con != <span class="hljs-literal">null</span> &amp;&amp; statement != <span class="hljs-literal">null</span> &amp;&amp; resultSet != <span class="hljs-literal">null</span>){
        <span class="hljs-keyword">try</span> {
            resultSet.close();
            statement.close();
            <span class="hljs-comment">//归还连接</span>
            con.close();
        } <span class="hljs-keyword">catch</span> (SQLException e) {
             e.printStackTrace();
         }
    }
}

}

三、sql 语句
package com.yanqi.jdbc06;

import org.apache.commons.dbcp.BasicDataSource;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbcpUtils {

<span class="hljs-comment">//1.定义常量 保存数据库连接的相关信息</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> <span class="hljs-type">String</span> <span class="hljs-variable">DRIVERNAME</span> <span class="hljs-operator">=</span> <span class="hljs-string">"com.mysql.jdbc.Driver"</span>;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> <span class="hljs-type">String</span> <span class="hljs-variable">URL</span> <span class="hljs-operator">=</span> <span class="hljs-string">"jdbc:mysql://localhost:3306/db5?characterEncoding=UTF-8"</span>;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> <span class="hljs-type">String</span> <span class="hljs-variable">USERNAME</span> <span class="hljs-operator">=</span> <span class="hljs-string">"root"</span>;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> <span class="hljs-type">String</span> <span class="hljs-variable">PASSWORD</span> <span class="hljs-operator">=</span> <span class="hljs-string">"123456"</span>;

<span class="hljs-comment">//2.创建连接池对象 (有DBCP提供的实现类)</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-type">BasicDataSource</span> <span class="hljs-variable">dataSource</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">BasicDataSource</span>();

<span class="hljs-comment">//3.使用静态代码块进行配置</span>
<span class="hljs-keyword">static</span>{
    dataSource.setDriverClassName(DRIVERNAME);
    dataSource.setUrl(URL);
    dataSource.setUsername(USERNAME);
    dataSource.setPassword(PASSWORD);
    dataSource.setMaxActive(<span class="hljs-number">20</span>);
}

<span class="hljs-comment">//4.获取连接的方法</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> Connection <span class="hljs-title function_">getConnection</span><span class="hljs-params">()</span> <span class="hljs-keyword">throws</span> SQLException {

    <span class="hljs-comment">//从连接池中获取连接</span>
    <span class="hljs-type">Connection</span> <span class="hljs-variable">connection</span> <span class="hljs-operator">=</span> dataSource.getConnection();
    <span class="hljs-keyword">return</span> connection;
}

<span class="hljs-comment">//5.释放资源方法</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">close</span><span class="hljs-params">(Connection con, Statement statement)</span>{

    <span class="hljs-keyword">if</span>(con != <span class="hljs-literal">null</span> &amp;&amp; statement != <span class="hljs-literal">null</span>){
        <span class="hljs-keyword">try</span> {
            statement.close();
            <span class="hljs-comment">//归还连接</span>
            con.close();
        } <span class="hljs-keyword">catch</span> (SQLException e) {
            e.printStackTrace();
        }
    }

}

<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">close</span><span class="hljs-params">(Connection con, Statement statement, ResultSet resultSet)</span>{

    <span class="hljs-keyword">if</span>(con != <span class="hljs-literal">null</span> &amp;&amp; statement != <span class="hljs-literal">null</span> &amp;&amp; resultSet != <span class="hljs-literal">null</span>){
        <span class="hljs-keyword">try</span> {
            resultSet.close();
            statement.close();
            <span class="hljs-comment">//归还连接</span>
            con.close();
        } <span class="hljs-keyword">catch</span> (SQLException e) {
            e.printStackTrace();
        }
    }

}

}


 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor