|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> && 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> && statement != <span class="hljs-literal">null</span> && 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> && 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> && statement != <span class="hljs-literal">null</span> && 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