数据库系统概论(第五版)ppt第8章课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据库系统概论(第五版)ppt第8章课件.ppt》由会员分享,可在线阅读,更多相关《数据库系统概论(第五版)ppt第8章课件.ppt(139页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、An Introduction to Database System数据库系统概论An Introduction to Database System第八章第八章 数据库编程数据库编程xx大学信息学院大学信息学院An Introduction to Database System第八章第八章 数据库编程数据库编程8.1 嵌入式嵌入式SQL8.2 过程化过程化SQL8.3 存储过程和函数存储过程和函数8.4 ODBC编程编程*8.5 OLE DB*8.6 JDBC编程编程8.7 小结小结An Introduction to Database System8.1 嵌入式嵌入式SQLvSQL语言提供
2、了两种不同的使用方式语言提供了两种不同的使用方式n交互式交互式n嵌入式嵌入式v为什么要引入嵌入式为什么要引入嵌入式SQLnSQL语言是非过程性语言语言是非过程性语言n事务处理应用需要高级语言事务处理应用需要高级语言v这两种方式细节上有差别,在程序设计的环境下,这两种方式细节上有差别,在程序设计的环境下,SQL语句要做某些必要的扩充语句要做某些必要的扩充An Introduction to Database System8.1 嵌入式嵌入式SQL8.1.1 嵌入式嵌入式SQL的处理过程的处理过程8.1.2 嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信8.1.3 不用游标的不用游
3、标的SQL语句语句8.1.4 使用游标的使用游标的SQL语句语句8.1.5 动态动态SQLAn Introduction to Database System8.1.1 嵌入式嵌入式SQL的处理过程的处理过程v主语言主语言n嵌入式嵌入式SQL是将是将SQL语句嵌入程序设计语言中,被嵌入语句嵌入程序设计语言中,被嵌入的程序设计语言,如的程序设计语言,如C、C+、Java,称为宿主语言,简,称为宿主语言,简称主语言。称主语言。v处理过程处理过程n预编译方法预编译方法An Introduction to Database System嵌入式嵌入式SQL的处理过程(续)的处理过程(续)关系数据库管理系
4、统预处关系数据库管理系统预处理程序转换嵌入式理程序转换嵌入式SQL语语句为函数调用句为函数调用含嵌入式含嵌入式SQL语句语句的主语言程序的主语言程序转换后的转换后的主语言程序主语言程序主语言编译程序主语言编译程序编译处理编译处理目标语言程序目标语言程序An Introduction to Database System嵌入式嵌入式SQL的处理过程(续)的处理过程(续)v为了区分为了区分SQL语句与主语言语句,所有语句与主语言语句,所有SQL语句语句必须加前缀必须加前缀EXEC SQL,主语言为主语言为C语言时,语句格式:语言时,语句格式:nEXEC SQL;An Introduction to
5、 Database System8.1 嵌入式嵌入式SQL8.1.1 嵌入式嵌入式SQL的处理过程的处理过程8.1.2 嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信8.1.3 不用游标的不用游标的SQL语句语句8.1.4 使用游标的使用游标的SQL语句语句8.1.5 动态动态SQLAn Introduction to Database System8.1.2 嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信v将将SQL嵌入到高级语言中混合编程,程序中会含嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句有两种不同计算模型的语句nSQL语句语句l 描述性
6、的面向集合的语句描述性的面向集合的语句l 负责操纵数据库负责操纵数据库n高级语言语句高级语言语句l 过程性的面向记录的语句过程性的面向记录的语句l 负责控制逻辑流程负责控制逻辑流程n它们之间应该如何通信?它们之间应该如何通信?An Introduction to Database System嵌入式嵌入式SQL语句与主语言之间的通信(续)语句与主语言之间的通信(续)v数据库工作单元与源程序工作单元之间的通信数据库工作单元与源程序工作单元之间的通信(1)向主语言传递)向主语言传递SQL语句的执行状态信息,使主语言语句的执行状态信息,使主语言能够据此控制程序流程,主要用能够据此控制程序流程,主要用
7、SQL通信区实现通信区实现(2)主语言向)主语言向SQL语句提供参数,主要用主变量实现语句提供参数,主要用主变量实现(3)将)将SQL语句查询数据库的结果交主语言处理,主要语句查询数据库的结果交主语言处理,主要用主变量和游标实现用主变量和游标实现An Introduction to Database System1.SQL通信区通信区vSQLCA:SQL Communication AreanSQLCA是一个数据结构是一个数据结构vSQLCA的用途的用途nSQL语句执行后,系统反馈给应用程序信息语句执行后,系统反馈给应用程序信息l 描述系统当前工作状态描述系统当前工作状态l 描述运行环境描述运
8、行环境n这些信息将送到这些信息将送到SQL通信区中通信区中n应用程序从应用程序从SQL通信区中取出这些状态信息,据此决通信区中取出这些状态信息,据此决定接下来执行的语句定接下来执行的语句An Introduction to Database SystemSQL通信区(续)通信区(续)vSQLCA使用方法使用方法n定义定义SQLCAl 用用EXEC SQL INCLUDE SQLCA定义定义n使用使用SQLCAlSQLCA中有一个存放每次执行中有一个存放每次执行SQL语句后返回代码的变语句后返回代码的变量量SQLCODEl如果如果SQLCODE等于预定义的常量等于预定义的常量SUCCESS,则表
9、示,则表示SQL语句成功,否则表示出错语句成功,否则表示出错l应用程序每执行完一条应用程序每执行完一条SQL 语句之后都应该测试一下语句之后都应该测试一下SQLCODE的值,以了解该的值,以了解该SQL语句执行情况并做相应语句执行情况并做相应处理处理An Introduction to Database System2.主变量主变量 v主变量主变量n嵌入式嵌入式SQL语句中可以使用主语言的程序变量来输入语句中可以使用主语言的程序变量来输入或输出数据或输出数据n在在SQL语句中使用的主语言程序变量简称为主变量语句中使用的主语言程序变量简称为主变量(Host Variable)An Introdu
10、ction to Database System主变量(续)主变量(续)v主变量的类型主变量的类型n输入主变量输入主变量l由应用程序对其赋值,由应用程序对其赋值,SQL语句引用语句引用n输出主变量输出主变量l由由SQL语句对其赋值或设置状态信息,返回给应用程序语句对其赋值或设置状态信息,返回给应用程序An Introduction to Database System主变量(续)主变量(续)v指示变量指示变量n是一个整型变量,用来是一个整型变量,用来“指示指示”所指主变量的值或条件所指主变量的值或条件n一个主变量可以附带一个指示变量(一个主变量可以附带一个指示变量(Indicator Vari
11、able)n指示变量的用途指示变量的用途l指示输入主变量是否为空值指示输入主变量是否为空值l检测输出变量是否为空值,值是否被截断检测输出变量是否为空值,值是否被截断An Introduction to Database System主变量(续)主变量(续)v在在SQL语句中使用主变量和指示变量的方法语句中使用主变量和指示变量的方法n说明主变量和指示变量说明主变量和指示变量BEGIN DECLARE SECTION.(说明主变量和指示变量)(说明主变量和指示变量).END DECLARE SECTIONAn Introduction to Database System主变量(续)主变量(续)v
12、在在SQL语句中使用主变量和指示变量的方法(续)语句中使用主变量和指示变量的方法(续)n使用主变量使用主变量l说明之后的主变量可以在说明之后的主变量可以在SQL语句中任何一个能够使用表语句中任何一个能够使用表达式的地方出现达式的地方出现l为了与数据库对象名(表名、视图名、列名等)区别,为了与数据库对象名(表名、视图名、列名等)区别,SQL语句中的主变量名前要加冒号(语句中的主变量名前要加冒号(:)作为标志)作为标志n使用指示变量使用指示变量l 指示变量前也必须加冒号标志指示变量前也必须加冒号标志l 必须紧跟在所指主变量之后必须紧跟在所指主变量之后An Introduction to Datab
13、ase System主变量(续)主变量(续)v在在SQL语句之外(主语言语句中)使用主变量和语句之外(主语言语句中)使用主变量和指示变量的方法指示变量的方法n可以直接引用,不必加冒号可以直接引用,不必加冒号An Introduction to Database System3.游标游标v为什么要使用游标为什么要使用游标nSQL语言与主语言具有不同数据处理方式语言与主语言具有不同数据处理方式nSQL语言是面向集合的,一条语言是面向集合的,一条SQL语句原则上可以产语句原则上可以产生或处理多条记录生或处理多条记录n主语言是面向记录的,一组主变量一次只能存放一条主语言是面向记录的,一组主变量一次只能
14、存放一条记录记录n仅使用主变量并不能完全满足仅使用主变量并不能完全满足SQL语句向应用程序输语句向应用程序输出数据的要求出数据的要求n嵌入式嵌入式SQL引入了游标的概念,用来协调这两种不同引入了游标的概念,用来协调这两种不同的处理方式的处理方式An Introduction to Database System 游标(续)游标(续)v游标游标n游标是系统为用户开设的一个数据缓冲区,存放游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果语句的执行结果n每个游标区都有一个名字每个游标区都有一个名字n用户可以用用户可以用SQL语句逐一从游标中获取记录,并赋给语句逐一从游标中获取记录,并赋
15、给主变量,交由主语言进一步处理主变量,交由主语言进一步处理An Introduction to Database System4.建立和关闭数据库连接建立和关闭数据库连接(1)建立数据库连接)建立数据库连接 EXEC SQL CONNECT TO targetAS connection-nameUSER user-name;ntarget是要连接的数据库服务器是要连接的数据库服务器l常见的服务器标识串,如常见的服务器标识串,如:l包含服务器标识的包含服务器标识的SQL串常量串常量 lDEFAULT An Introduction to Database System建立和关闭数据库连接建立和关
16、闭数据库连接(续)(续)nconnect-name是可选的连接名,连接名必须是一个是可选的连接名,连接名必须是一个有效的标识符有效的标识符 n在整个程序内只有一个连接时可以不指定连接名在整个程序内只有一个连接时可以不指定连接名n程序运行过程中可以修改当前连接程序运行过程中可以修改当前连接 EXEC SQL SET CONNECTION connection-name|DEFAULT;An Introduction to Database System建立和关闭数据库连接建立和关闭数据库连接(续)(续)(2)关闭数据库连接)关闭数据库连接 EXEC SQL DISCONNECT connecti
17、on;An Introduction to Database System5.程序实例程序实例v例例8.1 依次检查某个系的学生记录,交互式更新依次检查某个系的学生记录,交互式更新某些学生年龄。某些学生年龄。EXEC SQL BEGIN DECLARE SECTION;/*主变量说明开始主变量说明开始*/char Deptname20;char Hsno9;char Hsname20;char Hssex2;int HSage;int NEWAGE;EXEC SQL END DECLARE SECTION;/*主变量说明结束主变量说明结束*/long SQLCODE;EXEC SQL INCL
18、UDE SQLCA;/*定义定义SQL通信区通信区*/An Introduction to Database System程序实例(续)程序实例(续)int main(void)/*C语言主程序开始语言主程序开始*/int count=0;char yn;/*变量变量yn代表代表yes或或no*/printf(Please choose the department name(CS/MA/IS):);scanf(%s,deptname);/*为主变量为主变量deptname赋值赋值*/EXEC SQL CONNECT TO TESTlocalhost:54321 USER SYSTEM/MAN
19、AGER;/*连接数据库连接数据库TEST*/EXEC SQL DECLARE SX CURSOR FOR /*定义游标定义游标SX*/SELECT Sno,Sname,Ssex,Sage /*SX对应的语句对应的语句*/FROM StudentWHERE SDept=:deptname;EXEC SQL OPEN SX;/*打开游标打开游标SX,指向查询结果的第一行,指向查询结果的第一行*/An Introduction to Database System程序实例(续)程序实例(续)for(;)/*用循环结构逐条处理结果集中的记录用循环结构逐条处理结果集中的记录*/EXEC SQL FET
20、CH SX INTO:HSno,:Hsname,:HSsex,:HSage;/*推进游标,将当前数据放入主变量推进游标,将当前数据放入主变量*/if(SQLCA.SQLCODE!=0)/*SQLCODE!=0,表示操作不成功,表示操作不成功*/break;/*利用利用SQLCA中的状态信息决定何时退出循环中的状态信息决定何时退出循环*/if(count+=0)/*如果是第一行的话,先打出行头如果是第一行的话,先打出行头*/printf(n%-10s%-20s%-10s%-10sn,Sno“,Sname“,Ssex,Sage);printf(%-10s%-20s%-10s%-10dn“,HSno
21、,Hsname,Hssex,HSage);/*打印查询结果打印查询结果*/printf(“UPDATE AGE(y/n)?”);/*询问用户是否要更新该学生的年龄询问用户是否要更新该学生的年龄*/doscanf(%c,&yn);while(yn!=N&yn!=n&yn!=Y&yn!=y);An Introduction to Database System程序实例(续)程序实例(续)if(yn=y|yn=Y)/*如果选择更新操作如果选择更新操作*/printf(INPUT NEW AGE:);scanf(%d,&NEWAGE);/*用户输入新年龄到主变量中用户输入新年龄到主变量中*/EXEC
22、SQL UPDATE Student /*嵌入式嵌入式SQL更新语句更新语句*/SET Sage=:NEWAGE WHERE CURRENT OF SX;/*对当前游标指向的学生年龄进行更新对当前游标指向的学生年龄进行更新*/EXEC SQL CLOSE SX;/*关闭游标关闭游标SX,不再和查询结果对应,不再和查询结果对应*/EXEC SQL COMMIT WORK;/*提交更新提交更新*/EXEC SQL DISCONNECT TEST;/*断开数据库连接断开数据库连接*/An Introduction to Database System8.1 嵌入式嵌入式SQL8.1.1 嵌入式嵌入式
23、SQL的处理过程的处理过程8.1.2 嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信8.1.3 不用游标的不用游标的SQL语句语句8.1.4 使用游标的使用游标的SQL语句语句8.1.5 动态动态SQLAn Introduction to Database System8.1.3 不用游标的不用游标的SQL语句语句v不用游标的不用游标的SQL语句的种类语句的种类n 说明性语句说明性语句n 数据定义语句数据定义语句n 数据控制语句数据控制语句n 查询结果为单记录的查询结果为单记录的SELECT语句语句n 非非CURRENT形式的增删改语句形式的增删改语句 An Introduct
24、ion to Database System不用游标的不用游标的SQL语句(续)语句(续)1.查询结果为单记录的查询结果为单记录的SELECT语句语句 2.非非CURRENT形式的增删改语句形式的增删改语句An Introduction to Database System1.查询结果为单记录的查询结果为单记录的SELECT语句语句v这类语句不需要使用游标,只需用这类语句不需要使用游标,只需用INTO子句指定子句指定存放查询结果的主变量。存放查询结果的主变量。v例例8.2 根据学生号码查询学生信息。根据学生号码查询学生信息。EXEC SQL SELECT Sno,Sname,Ssex,Sage
25、,Sdept INTO:Hsno,:Hname,:Hsex,:Hage,:Hdept FROM Student WHERE Sno=:givensno;/*把要查询的学生的学号赋给为了主变量把要查询的学生的学号赋给为了主变量givensno*/An Introduction to Database System查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)vINTO子句、子句、WHERE子句和子句和HAVING短语的条件短语的条件表达式中均可以使用主变量表达式中均可以使用主变量v查询返回的记录中,可能某些列为空值查询返回的记录中,可能某些列为空值NULLv 如果查询结果实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 第五 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内