当前位置: 首页 > news >正文

单元5 数据库技术

任务5.1 某商城系统中商品管理
/01支撑知识--数据库连接
一、JDBC简介
1、JDBC的全称为Java Data Base Connectivity,它是一个面向对象的应用程序接口(API)。
2、JDBC的最大特点是它独立于具体的关系数据库。
3、JDBC是连接数据库和Java应用程序的纽带,通过它可以访问各种关系数据库。
4、JDBC在Java程序中所起的作用
(1)与数据库建立连接.
(2)向数据库发送SQL语句。
(3)获取并处理结果。
image
二、JDBC驱动程序
1、JDBC是一个编程接口集合,具体的连接数据库和操作数据库的功能并没有实现,具体的功能实现则由特定的JDBC驱动程序完成。
image
(1)JDBC-ODBC桥
JDBC-ODBC桥驱动程序由SUN公司开发,是JDK提供的数据库操作标准API。特点主要是:①不需要下载JDBC驱动程序。
②由于JDBC-ODBC桥驱动程序经过几次中间调用,所以执行效率比较低。
image
(2)本地API部分支持Java技术驱动
这种驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、DB2或其他DBMS(Database Management System)的调用,通过直接映射特定数据库厂家的DBMS库接口实现。特点主要是:
① 需要在客户机上安装本地的JDBC驱动程序和特定厂商的本地API。
② 数据库访问的效率高。
image
(3)JDBC网络驱动
将JDBC映射到与DBMS厂家无关的网络协议中间件,再由这些中间件映射到特定的DBMS厂家的接口。特点主要是:
①最为灵活的JDBC驱动程序。
②适合于Internet的应用。
image
(4)本地协议驱动
本地协议驱动通常由数据库厂商直接提供驱动的JAR包,本地协议驱动程序直接将JDBC调用转换为数据库特定的网络通信协议,然后与数据库进行交互。
①纯Java语言编写。
②数据库厂商直接提供。
image
三、JDBC API
JDBC的核心是为开发人员提供操作数据库的Java API类库,Java程序开发人员可以利用这些类库开发数据库应用程序。
(1) Driver接口
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。驱动程序的加载可以使用Class.forName()方法,不同的数据库JDBC驱动程序的类名不同。在MySQL 8.0中,通过Class.forName(“com.mysql.cj.jdbc.Driver”) 加载驱动程序。
image
(2) DriverManager类
使用JDBC连接数据库,需要用到DriverManager类,DriverManager类用于加载JDBC驱动并且创建JDBC程序与数据库的连接。
image
根据url载入的驱动程序便可以找到对应的数据源并且实现数据库连接,url是由设计驱动程序的人员来命名和指定的,使用者只需要使用驱动程序对应的url即可。
JDBC URL标准的语法: jdbc::
连接MySQL数据库为例,获取数据库连接的java代码示例:
image
(3) Connection接口
DriverManager类的getConnection()方法返回了一个Connection对象,Connection对象是表示数据库连接的对象,只有获得该连接对象,才能访问并操作数据库。
最常用的createStatement ()方法用于创建SQL语句对象。
Statement stmt = conn.createStatement();
image
(4) Statement接口
Statement接口用于执行静态的SQL语句,并返回一个结果对象.
// 代码示例
String sql = "select * from user";
// stmt为之前通过Connection对象获取的Statement对象
ResultSet rs = stmt.executeQuery(sql);
image
(5) PreparedStatement接口
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。
// 使用PreparedStatement执行SQL语句。
String sql = "select * from user where userId=?"; //占位符?替代参数
PreparedStatement ps = conn.prepareStatement(sql); //通过Connection对象创建PreparedStatement对象
ps.setInt(1, 1); //将指定参数userId设置为int值1
ResultSet rs = ps.executeQuery(); // 执行查询,此处不要有参数
image
(6) ResultSet接口
ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。
// rs对象为ResultSet结果集对象
while (rs.next()) {
int id = rs.getInt("id"); // 通过列名获取指定字段的值
String name = rs.getString("name");
String psw = rs.getString("password");
String email = rs.getString("email");
Date birthday = rs.getDate("birthday");
//输出结果信息
System.out.println(id + " | " + name + " | " + psw + " | " + email + " | " + birthday);
}
image
/01支撑知识--数据的CRUD操作
支撑知识--数据的CRUD操作
Java中的JDBC是用来连接数据库从而执行相关数据操作的,因此在使用JDBC时,一定要确保安装了数据库。下面以连接MySQL数据库为例,介绍使用JDBC执行相关操作。程序的具体实现步骤如图所示。
image
JDBC连接数据库测试-示例
image
JDBC连接数据库工具类DBUtils.java-示例
定义类DBUtils,进行数据库的连接封装。
image
2.读取(Retrieve)
示例-查询输出用户信息列表
image
3. 创建(Create)
示例-向用户表中插入新的用户信息
image
4.更新(Update)
示例-更新用户密码信息
image
5.删除(Delete)
示例-删除某个用户信息
image
任务实现 某商城系统中商品信息的展示
商品管理模块,主要实现商品的增加、修改、删除、查看等功能。商品管理的开发过程为:数据访问层设计、业务层设计、控制端设计、视图层设计。
image
image
任务5.2 某商城系统中基于连接池实现商品的上下架
支撑知识—数据库连接池
为了避免频繁的创建数据库连接,提出了数据库连接池技术。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立。
image
image
我们习惯性的把实现了javax.sql.DataSource接口的类称为数据源,顾名思义,数据源即数据的来源,在数据源中存储了所有建立数据库连接的信息。常见的数据源有DBCP数据源和C3P0数据源,接下来对这两种数据源进行详细的讲解。
支撑知识—DBCP数据源
DBCP是数据库连接池(DataBase Connection Pool)的简称,是Apache组织下的开源连接池实现,也是Tomcat服务器使用的连接池组件
image
image
(1)通过BasicDataSource创建
使用BasicDataSource类创建一个数据源对象,手动给数据源对象设置属性值,然后获取数据库连接对象
image
image
(2)通过读取配置文件创建
使用BasicDataSourceFactory工厂类读取配置文件,创建数据源对象,然后获取数据库连接对象。
image
DBCP通过读取配置创建数据源-示例
image
支撑知识—C3P0数据源
C3P0是目前最流行的开源数据库连接池之一,它实现了DataSource数据源接口,支持JDBC2和JDBC3的标准规范,易于扩展并且性能优越,著名的开源框架 Spring使用的即是该数据源。
image
C3P0通过ComboPooledDataSource创建数据源-示例
通过ComboPooledDataSource创建
image
C3P0通过读取配置创建数据源-示例
image
任务实现 某商城系统中购物车信息展示
商品的上下架模块,主要实现商品的上架和下架功能。本任务针对上下架功能开发过程分为以下模块:数据池设计、数据访问层设计、业务层设计、控制端设计、视图层设计。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接。
image
(1)数据库连接池设计
01 增加c3p0的相关依赖

com.mchange
c3p0sss
0.9.5.2

02 创建数据库配置文件

root123com.mysql.cj.jdbc.Driverjdbc:mysql://127.0.0.1:3306/x_mall?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true30000103010010200 03 创建类DBPoolUtils public class DBPoolUtils {public static DataSource ds = null;// 初始化C3P0数据源static {// 使用c3p0-config.xml配置文件ComboPooledDataSource cpds = new ComboPooledDataSource();ds = cpds;}/** 通过数据池获取数据库连接 */public static Connection getConnection() throws SQLException {return ds.getConnection();} } (2)数据访问层 ![image](https://img2024.cnblogs.com/blog/3772585/202605/3772585-20260506171253493-255670525.png) (3)业务层 //在ProductService接口中,添加方法声明 public int updateStatus(Integer productId, Integer status); //在ProductServiceImpl类中,实现上下架功能 public int updateStatus(Integer productId, Integer status) {return productDao.updateStatus(productId, status); } (4)控制端 if (null != key && key.equals("upDown")){// 后台管理功能:货品上下架String statusStr = request.getParameter("status");productService.updateStatus(productId, Integer.parseInt(statusStr));response.sendRedirect("manage/productList.jsp"); } (5)视图层上架 下架 
http://www.jsqmd.com/news/764895/

相关文章:

  • 深圳全居邦防水工程:宝安区外墙防水哪家好 - LYL仔仔
  • 通过Python快速接入Taotoken体验多模型聊天补全功能
  • 2026年造型铝板钣金厂家推荐:铝板钣金/钣金定制/天花板吊顶钣金专业供应 - 品牌推荐官
  • Better BibTeX:Zotero 的学术写作生产力引擎
  • 2026年重庆装配式环保墙板深度选购指南:五感强化木板材与防撞板全面横评 - 优质企业观察收录
  • 2026如何选美国高端留学中介?美国本科高端定制留学机构推荐 - 品牌2026
  • 别再为图像对齐发愁了!用OpenCV的calcOpticalFlowFarneback函数,5分钟搞定图像形变矫正
  • 为何我关闭了wps,安装雨课堂还提示说需要继续关闭wps,这是软件bug吗?如何解决?——任务管理器找不到,我采用的是注销即可解决问题。
  • 想发EI会议论文?手把手教你从零准备一篇航空航天力学方向的JPCS期刊投稿
  • 2026年5月北京民商事诉讼仲裁/企业法律顾问/二审/再审/民商事案件律师解析,认准嘉潍律师事务所曹春芳律师 - 2026年企业推荐榜
  • 本科毕业生100元搞定降AI率?低预算3工具组合搭配攻略! - 我要发一区
  • 轻松上手:FxSound新手入门使用指南
  • 2026年制冷设备厂家推荐:长沙珠峰制冷设备有限公司,水果冷库/汽调冷库/冷库工程/排管冷库专业服务 - 品牌推荐官
  • AIGC降重免费版能用吗?率零1000字免费试用实测降幅数据! - 我要发一区
  • 基于Node.js的WhatsApp自动化机器人框架:从原理到实战部署
  • 独立开发者如何借助Taotoken低成本试验多种大模型创意
  • 揭开 Qoder 的面纱:一款 Agentic 编码平台能为你做什么?
  • 别再用中继了!用两台旧OpenWRT路由器,手把手教你搭建更稳的802.11s Mesh网络
  • 2026年招商选康渡,靠谱服务助你轻松赢 - 速递信息
  • Cursor Free VIP:解锁AI编程助手高级功能的完整解决方案
  • 2026年微商城平台推荐!附搭建教程 - FaiscoJeff
  • Arm Compiler FuSa错误解析与嵌入式安全开发实践
  • 2026年成都保鲜冷库厂家建设新观察:专业工程服务商如何重塑行业标准 - 深度智识库
  • 教育科技公司如何借助Taotoken构建自适应学习问答系统
  • 2026年叙利亚食品展 FoodSyria - 中国组团单位- 新天国际会展 - 新天国际会展
  • Backtrader量化回测终极指南:PyQt与FinPlot打造高效交易系统
  • 2026年成都速冻冷库厂家新标杆:深度解析速冻冷库建设首选企业 - 深度智识库
  • 书匠策AI:毕业论文的“智能导航仪”,让学术之旅畅通无阻!
  • OBS Browser插件:在OBS Studio中嵌入现代网页的强大解决方案
  • SSH终端集成AI助手:提升运维与开发效率的实战指南