数据库应用编程
数据库连接技术
数据库接口中间件:
ODBC 开放式数据库连接服务
由微软公司开发,ODBC建立了一组规范,为多种数据库的开发提供统一的API接口
ODBC技术为应用程序提供了一套CLI(调用层接口)函数库和基于DLL(动态链接库)的运行支持环境。
层次结构及访问步骤
ODBC体系结构由四个部分组成:
- ODBC数据库应用程序
- 启动程序管理器 - 最重要的部件
- DBMS驱动程序
- 数据源
JDBC Java数据库连接服务
由SUN(Oracle)开发
JDBC包括一组用JAVA语言书写的接口和类,独立于特定的DBMS统一对数据库的操作。
接口封装位于java.sql、Javax.sql两个包
数据库访问步骤
- java程序加载java包java.sql.*中的核心类和接口,然后加载驱动程序
- 创建数据库connection连接对象
- 创建statement对象
- 调用statement对象的相关方法执行对应的SQL语句
- 处理数据库返回结果
- 关闭连接
1 | package JDBCtest; |
储存过程编程
是数据库的一种对象,由一组完成特定数据处理功能的SQL语句和过程语句组成的程序,
编译后储存在数据库中
外部程序可以直接调用储存过程执行,不用再次编译
1 | CREATE [ OR REPLACE ] FUNCTION name |
优点
- 减少网络通信量
- 执行速度更快
- 更强的适应性
- 降低了业务实现与应用程序的耦合
- 降低了开发的复杂性
- 保护数据库元信息
- 增强了数据库的安全性
缺点
- SQL本身是一种结构化查询语言,而存储过程本质上是过程化的程序;面对复杂的业务逻辑,过程化处理逻辑相对比较复杂;而SQL语言的优势是面向数据查询而非业务逻辑的处理。
- 如果存储过程的参数或返回数据发生变化,一般需要修改存储过程的代码,同时还需要更新主程序调用存储过程的代码。
- 开发调试复杂,由于缺乏支持存储过程的集成开发环境,存储过程的开发调试要比一般程序困难。
- 可移植性差。
例
此例创建过程函数Out_Record()
将查询的学生ID与姓名成对输出
触发器编程
由事件触发启动而不是运行启动,所以不能有参数
可用于定义逻辑比较复杂的完整性约束或业务规则约束
分类
按执行次数
- 语句级触发器 - FOR EACH STATEMENT
- 行级触发器 - FOR EACH ROW 指定表数据每变化一行就执行一次触发器
按执行时间
- BEFORE触发器
- AFTER触发器
- INSTEAD OF触发器
特殊变量
- NEW - RECORD类型,对于行级触发,它保存INSERT/UPADTE操作产生的新行数据
- OLD - RECORD类型,对于行级触发,它保存INSERT/DELETE操作前的旧行数据
- TG_OP - text类型,获取触发器是由INSERT/UPDATE/DELETE哪类操作引发
规则触发器
附加到一个表,只捕获DML事件
将function安装为触发器的格式
例
此例在Audit_score中进行delete|update|insert的记录
事件触发器
针对一个数据库DDL操作的触发器,在数据库级别上捕获DDL事件
类型
- ddl_command_start
- ddl_command_end
- sql_drop删除一个数据库前触发
安装格式
游标
- 游标(Cursor)是一种临时的数据库对象;
- 用来存放从数据库表中查询返回的数据记录;
- 提供了从结果集中提取并分别处理每一条记录的机制;
- 游标总是与一条SQL查询语句相关联;
- 游标包括:SQL语言的查询结果,指向特定记录的指针。