通过嵌套SQL的宿主语言
通过应用程序接口,允许将SQL查询传给数据库
ODBC、JDBC
其他:如RDO,ADO和OLEDB这些接口目前并不能代替ODBC
补充ODBC
Open Database Connectivity
它是一种用来在相关或不相关的数据库管理系统(DBMS)中存取数据的,用C语言实现的、标准应用程序数据接口。
通过ODBC API,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口。
JDBC
是一种可用于执行SQL语句的Java API。它由一些Java语言编写的类和界面组成。
DBC为数据库应用开发人员,数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。
嵌入式SQL
将SQL嵌入到某种高级语言(又称主语言)中使用,利用高级语言的过程性结构来弥补SQL实现的复杂应用方面的不足
SQL语句负责操纵数据库,主语言语句负责控制程序流程
嵌入式SQL的一般形式
EXEC SQL前缀用以区分SQL语句与主语言语句
EXEC SQL <SQL语句>;
DBMS多采用预编译方式处理宿主语言SQL
嵌入式SQL语句包括
说明性语句
可执行语句:数据定义、数据控制、数据操纵
与主语句之间的通信
数据库工作单元与源程序工作单元如何通信?
(1)用SQL通信区向主语言传递SQL语句执行状态信息
(2)主语言通过主变量向SQL语句提供参数
(3)SQL语句查询数据库的结果通过主变量和游标交主语言进一步处理
游标
SQL语言是集合处理的方式,主语言是单记录处理方式,如何协调?
引入游标
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
每个游标区都有一个名字
用户通过游标逐一获取记录,并赋给主变量,交主语言进一步处理
游标的使用
说明游标
EXEC SQL DECLARE <游标名> CURSOR FOR <SELECT语句>;
打开游标
EXEC SQL OPEN<游标名>;
推进游标并获取当前记录(通常在循环结构中使用)
EXEC SQL FETCH <游标名> INTO <主变量> [,<主变量>]...;
关闭游标
EXEC SQL CLOSE <游标名>