SQL最后的连接池
JDBC连接池
2、常见的连接池
A.标准连接池:
javax.sql.DataSource 通用的方法
a.getConnection() 获取连接池的操作
b.close() 归还连接池的操作(归还不是释放资源)
B.其他框架的连接池
a. C3P0 数据库连接池
b. Druid 阿里的连接池 现在主要就是使用阿里出品的Druid线程池
3、C3P0连接池的基本操作步骤
A.准备工作
a.导入jar包
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar
mysql-connector-java-5.1.37-bin.jar
b.配置文件(写在src文件夹目录下面,名称必须叫以下的名称) 二者选其一
c3p0.properties
c3p0-config.xml
B.编写代码的操作
a.创建对象
DataSource ds = new ComboPooledDataSource();
b.获取连接
Connection conn = ds.getConnection();
4、Druid连接池的使用
A.准备工作
a.导入jar包
druid-1.0.9.jar
mysql-connector-java-5.1.37-bin.jar
b.配置文件(写在src文件夹目录下面)
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db3
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
B.编写代码的操作
a.加载配置文件的数据 Properties
Properties pp = new Properties();
InputStream is = 当前类.class.getClassLoader().getResourceAsStream(配置文件的名称);
pp.load(is);
b.获取连接池的对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
c.获取连接
Connection conn = ds.getConnection();
Druid连接池的代码实现
如果有连接池工具类 当然代码是可以实现简化的
druid.properties是使用Druid线程池连接所需要的一个配置文件
package cn.itcast.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* Druid连接池的工具类
*/
public class JDBCUtils {
//1.定义成员变量 DataSource
private static DataSource ds ;
static{
try {
//1.加载配置文件
Properties pro = new Properties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//2.获取DataSource
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取连接
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 释放资源
*/
public static void close(Statement stmt,Connection conn){
/* if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();//归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}*/
close(null,stmt,conn);
}
public static void close(ResultSet rs , Statement stmt, Connection conn){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();//归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池方法
*/
public static DataSource getDataSource(){
return ds;
}
}