1.概念:
一个存放数据库连接的容器(集合)。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
2.好处:
1.节约资源
2.用户访问高效
3.实现:
1.标准接口:DataSourse
*获取方法:getConnection()
*归还连接:Connection.close() 如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接,而是归还连接。
2.一般我们不用去实现它,由数据库厂商来实现
1.C3p0:数据库连接池技术
2.Druid:数据库连接池现实技术
4.C3p0:数据库连接池技术
步骤:
1.导入jar包(三个)
2.定义配置文件:
*名称:c3p0.properties 或者 c3p0-config.xml
*路径:直接将文件放在src目录
3.创建核心对象 数据库连接池对象 ComboPooledDataSource
4.获取连接:getConnection
5.Druid:数据库连接池现实技术
步骤:
1.导入jar包
2.定义配置文件:
*是properties形式
*可以叫任意名称,可以放在任意目录下
3.加载配置文件。properties
4.获取数据库连接池对象:通过工厂来获取 DruidDataSourceFactory
5.获取连接:getConnection
定义工具类
1.定义一个类 JDBCUtil
2.提供静态代码块,初始化连接池对象
3.提供方法:
1.获取连接方法:通过数据库连接池获取连接
2.释放资源
3.获取连接池的方法
/**
* Druid连接池的工具类
*/
public class JDBCUtils {
//1.定义成员变量DataSource
private static DataSource ds;
static {
try {
Properties pro = new Properties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
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(PreparedStatement stat, Connection conn, ResultSet rs) {
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池方法
*/
public static DataSource getDataSource() {
return ds;
}
}
练习,向数据库中添加数据
/**
* 使用新的工具类
*/
public class DruidDemo2 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstat = null;
try {
//1.获取连接
conn = JDBCUtils.getConnection();
//2.定义sql
String sql = "insert into accounts value(null,?,?)";
//3.获取pstat对象
pstat = conn.prepareStatement(sql);
//4.给?赋值
pstat.setString(1,"wangwu");
pstat.setInt(2,1000);
//5.执行sql
int i = pstat.executeUpdate();
System.out.println(i);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(pstat,conn,null);
}
}
}