数据库连接池简介
- 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
- 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗落
- 好处
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
数据库连接池实现
- 标准接口:DataSource
- 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口
- 功能:获取连接
Connection getConnection()
- 常见的数据库连接池
- DBCP
- C3P0
- Druid
Druid
- Druid连接池是阿里巴巴开源的数据库连接池项目
JDBC练习
完成商品品牌数据的增删改查操作
- 查询:查询所有数据
public void testSelectAll() throws Exception {
//获取连接
//加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("C:/Users/USER/IdeaProjects/jdbc/src/druid.properties"));
//获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//获取对应的数据库连接
Connection connection = dataSource.getConnection();
//定义SQL
String sql = "SELECT * FROM tb_brand";
//获取pstmt对象
PreparedStatement pstmt = connection.prepareStatement(sql);
//设置参数
//无
//执行SQL
ResultSet rs = pstmt.executeQuery();
//处理结果
demo2 demo = null;
List<demo2> demo2s = new ArrayList<>();
while (rs.next()){
//获取数据
int id = rs.getInt("id");
String brand_name = rs.getString("brand_name");
String company_name = rs.getString("company_name");
int ordered = rs.getInt("ordered");
String description = rs.getString("description");
int status = rs.getInt("status");
//封装对象
demo = new demo2();
demo.setId(id);
demo.setBrandName(brand_name);
demo.setCompanyName(company_name);
demo.setOrdered(ordered);
demo.setDescription(description);
demo.setStatus(status);
//装载集合
demo2s.add(demo);
}
System.out.println(demo2s);
//释放资源
rs.close();
pstmt.close();
connection.close();
}
- 添加:添加品牌
public void testAdd() throws Exception {
//接收参数
String brandName = "香飘飘";
String companyName = "香飘飘";
int ordered = 1;
String description = "绕地球一圈";
int status = 1;
//加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("C:/Users/MIKU/IdeaProjects/jdbc/src/druid.properties"));
//获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//获取对应的数据库连接
Connection connection = dataSource.getConnection();
//定义SQL
String sql = "insert into tb_brand (brand_name, company_name, ordered, description, status) values(?,?,?,?,?);";
//获取pstmt对象
PreparedStatement pstmt = connection.prepareStatement(sql);
//设置参数
pstmt.setString(1,brandName);
pstmt.setString(2,companyName);
pstmt.setInt(3,ordered);
pstmt.setString(4,description);
pstmt.setInt(5,status);
//执行SQL
int count = pstmt.executeUpdate();//影响的行数
//处理结果
if(count > 0){
System.out.println("执行成功");
}else {
System.out.println("执行失败");
}
//释放资源
pstmt.close();
connection.close();
}
- 修改:根据id修改
//定义SQL
String sql = "UPDATE tb_brand \n" +
"SET brand_name = ?,\n" +
"company_name = ?,\n" +
"ordered = ?,\n" +
"description = ?,\n" +
"`status` = ? \n" +
"WHERE\n" +
"\tid = ?";
- 删除:根据id删除
//定义SQL
String sql = "DELETE FROM tb_brand WHERE id = ?";
Tips
以上学习内容均来自于B站黑马程序员