历史回顾
JDBC (java database connectivity) java数据库连接
五大步骤:
加载驱动
创建连接
编译SQL
发送并返回结果
释放资源
一个驱动类:
DriverManager :初始化信息并创建连接
四个接口:
Connection:创建连接的方法返回的接口
Statement: SQL发送的载体,不推荐(存在SQL注入问题)
PreparedStatememt:预编译SQL (因为有占位符)
ResultSet:结果集
execute() 和 executeUpdate()区别
execute()可以执行CRUD、返回值boolean , 查询返回true、增删改返回false
executeUpdate() 执行增删改 返回int类型,数字的大小是对数据库影响行数。
回顾JDBC增删改查操作
封装JDBC工具
封装思想:将固定部分定义公共类中,对外提供静态方法。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class Mypool {
//1.定义一个容器并指定容量-连接池,注意不能直接在ArrayList的括号里指定容量,然后通过pool.size()获取容量,
//因为那只是集合的最大容量,size()方法获取的是集合的元素个数,不是结合的最大容量
private static ArrayList<Connection> pool=new ArrayList<>();
private static int pool_size=5;
//2.初始化连接,并放进池子中
static {
for(int i=0;i<pool_size;i++) {
Connection connection = createConnection.getConnection();//调用了建立连接的方法
pool.add(connection);
// System.out.println("存放-池:" +connection + "当前池子中剩余连接数:"+pool.size());
}
}
//3.创建一个从容器中获取连接的方法
public static Connection getConnectionByPool() {
Connection connection=pool.remove(0);
System.out.println("取出-池:"+connection + "当前池子中剩余连接数:"+pool.size() );
return connection;
}
//4.创建一个归还连接的方法
public static void conn_back(Connection c,PreparedStatement ps,ResultSet rs) {
try {
if(null!=rs) {//把连接还回池子中之前,要先把对他进行的操作清零,保持连接还是什么都没有附带的状态
rs.close();
}
if(null!=ps) {
ps.close();
}
if(null!=c) {
pool.add(c);//将这个连接放进池子中
System.out.println("归还-池:"+c + "当前池子中剩余连接数:"+pool.size());
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}