欢迎来到天天文库
浏览记录
ID:50485553
大小:3.27 MB
页数:62页
时间:2020-03-09
《数据库技术与应用 教学课件 作者 张千帆chapter9.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库技术及应用华中科技大学管理学院第九章应用程序接口任何客户端应用程序都是使用一种接口来与数据库进行通信的。SQL编程技术可以提高应用程序和关系数据库之间的可操作性。本章介绍常用的SQL编程的方式:嵌入式SQL、ODBC、OLEDB、ADO和JDBC的概念和方法。主要内容9.1嵌入式SQL9.2ODBC9.3OLEDB9.4ADO9.5JDBC9.1嵌入式SQL为什么使用嵌入式SQL?有些操作对于交互式SQL是不可能的任务。SQL的表达能力相比高级语言有一定的限制,有些数据访问要求单纯使用SQL无法完成。一方面,SQL在逐渐增强自己的表达能力,另一方面,太多的扩
2、展会导致优化能力及执行效率的降低。非声明性动作实际的应用系统是非常复杂的,数据库访问只是其中一个部件。有些动作如与用户交互、图形化显示数据等只能用高级语言实现。9.1.1嵌入式SQL的处理过程宿主语言+嵌入SQL预处理程序宿主语言+函数调用宿主语言编译器宿主语言执行程序SQL函数定义库9.1.2嵌入式SQL与宿主语言的接口嵌入式SQL和宿主语言程序之间是通过主变量来传递信息。SQL语句引用主变量时,主变量前面都要加上冒号,但在宿主语言的语句中变量前没有冒号。宿主语言中使用SQL语句时,在SQL语句之前要加上关键字EXECSQL。所有的主变量的说明必须放在以下两个嵌
3、入式SQL语句之间。EXECSQLBEGINDECLARESECTION;...EXECSQLENDDECLARESECTION;9.1.2嵌入式SQL与宿主语言的接口例9.1:下列语句会出现在更新关系学生Student(学号,姓名,年龄)的C函数中。EXECSQLBEGINDECLARESECTION;charSID[2],Sname[10];intAge;EXECSQLENDDECLARESECTION;9.1.3嵌入式SQL的使用1)非查询语句及主变量的使用任何非查询语句(即不返回结果的SQL语句)都可以用主变量作为接口嵌入到宿主语言中2)查询语句(1)只产
4、生一个元组的查询语句(2)产生多个元组的查询语句及游标的使用1)非查询语句及主变量的使用例9.2使用主变量插入新的学生信息。voidgetStudent(){EXECSQLBEGINDECLARESECTION;charSID[2],Sname[10];intAge;EXECSQLENDDECLARESECTION;printf(“请输入学生学号、姓名和年龄”);scanf(“%s”,&SID);scanf(“%s”,&Sname);scanf(“%d”,&Age);EXECSQLINSERTINTOStudent(SID,Sname,Age)VALUES(:
5、SID,:Sname,:Age);}2)查询语句(1)只产生一个元组的查询语句对于只产生一个元组的查询语句,可以采用SELECT语句的变形把该元组存储在主变量中,元组的每个分量对应一个变量。这种变形的SELECT语句称为单行查询。单行查询的语法格式为:SELECT列名INTO主变量FROM基本表名或视图名WHERE条件表达式2)查询语句(1)只产生一个元组的查询语句例9.3读取用户指定的学生的年龄。voidgetAge(){EXECSQLBEGINDECLARESECTION;charSID[2];intAge;EXECSQLENDDECLARESECTION
6、;printf(“请输入学生学号”);scanf(“%s”,&SID);EXECSQLSELECTAgeINTO:AgeFROMStudentWHERESID=:SID;printf(“该学生的年龄为:%d”,Age);}2)查询语句(2)产生多个元组的查询语句及游标的使用查询结果多于一个元组的查询语句要使用游标(Cursor)。游标可以将多条记录一次一条地送到主程序处理,从而把对集合的操作转换成对单个记录的处理。使用游标的步骤①说明游标②打开游标③推进游标指针并取当前记录④关闭游标⑤使用游标更新数据2)查询语句(2)产生多个元组的查询语句及游标的使用
7、①声明游标EXECSQLDECLARE游标名[SCROLL]CURSORFOR表达式SCROLL指明是卷游标DECLARE只是声明语句,并不执行select语句②打开已说明的游标EXECSQLOPEN游标名游标打开后,指向查询结果的第一行之前2)查询语句(2)产生多个元组的查询语句及游标的使用③推进游标EXECSQLFETCH[NEXT
8、PRIOR
9、FIRST
10、LAST
11、RELATIVE整数
12、ABSOLUTE整数]FROM游标名INTO主变量NEXT:以游标的当前位置为基准,依次取下一个元组。PRIOR:以游标的当前位置为基准,依次取上一个元组。FIRST:取第
13、一个元组。
此文档下载收益归作者所有