第9章-数据库访问与系统建模要点课件.ppt
《第9章-数据库访问与系统建模要点课件.ppt》由会员分享,可在线阅读,更多相关《第9章-数据库访问与系统建模要点课件.ppt(41页珍藏版)》请在三一办公上搜索。
1、9.1 数据库访问概述,9.2 嵌入式SQL,第9章 数据库访问与系统建模,9.3 数据库接口技术,9.4 数据库系统建模方法,9.1 数据库访问概述,应用程序与SQL数据库联系的基本方式有:(1)嵌入式SQL或者动态SQL(2)数据库接口(3)SQL模块,借助高级语言的功能实现过程化控制与高级计算。,通过应用程序编程接口(API)函数中的参数-SQL语句,来使用数据库。,利用SQL扩展过程包的功能编程,调用程序模块,来操作数据库。SQL模块是对SQL语句的过程化扩展,常用于数据库服务器的编程。,9.2 嵌入式 SQL,一、概述SQL分:交互式嵌入式为何引入嵌入式:过程化应用复杂数据处理主语言
2、作用:负责控制流程及处理操纵结果。嵌入式 SQL作用:负责操纵DB。两种实现方法:预编译扩充、修改主语言编译程序使之能处理SQL,预编译方法:,预处理程序,宿主语言语句+函数调用,宿主语言编译程序,目标程序,连接程序,可执行程序,OS,运行结果,宿主语言语句+嵌入式SQL语句,9.2 嵌入式 SQL,二、嵌入式SQL的工作原理 1.嵌入式SQL与主语言的接口 SQL语句:面向集合主语言语句:过程性、记录式(1)状态变量SQLSTATE 描述系统当前状态和运行情况,在每一个SQL语句执行之后,DBMS将描述当前工作状态和运行环境的一个状态值放入SQLSTATE中。,(2)主变量 SQL语句中使用
3、的主语言程序变量称为主变量。输入主变量由应用程序对其赋值,SQL语句引用。输出主变量由SQL语句对其赋值或置状态,返应用程序。,9.2 嵌入式 SQL,(3)游标(Cursor)游标是系统开设的一个数据缓冲区,存放SQL语句的执行结果。作用:用户可以通过游标获取纪录,并赋给主变量,交主语言处理。,游标指针,SQL查询结果,9.2 嵌入式 SQL,2、嵌入式SQL需解决的问题:(1)如何区分SQL与主语言语句?前缀加EXEC SQL,结束处用ENDEXEC(或用分号)例:嵌入到C程序中:EXEC SQL;嵌入到Java程序中:#SQL;(2)如何区分主变量与SQL的列变量?主变量前加冒号。如::
4、Cname,(3)主变量与SQL的列变量如何交互、转换?需要有一种机制:能将SQL中的集合量逐个送入主变量内,供主程序使用。方法:用一组游标语句。,9.2 嵌入式 SQL,3、SQL语句与主语言间的通信:1)主语言向SQL语句提供参数;2)向主语言传递SQL的执行状态;3)将SQL操作结果交主语言进一步处理,嵌入式SQL工作原理:,主语言程序,SQL语句,游标,主变量,SQL状态,9.2 嵌入式 SQL,三、嵌入式SQL的程序组成嵌入式 SQL语句可分为:可执行语句(数据定义、控制、操纵)说明性语句(说明变量、游标)程序的主要部分(1)DECLARE段(用于定义主变量)格式:EXEC SQL
5、BEGIN DECLARE SECTION;/主变量说明 EXEC SQL END DECLARE SECTION;(2)CONNECT 语句(建立SQL连接)格式:EXEC SQL CONNECT TO USER;,9.2 嵌入式 SQL,(3)WHENEVER语句 使用WHENEVER语句可以简化每条嵌入式SQL语句后编写检查SQLSTATE值的程序。WHENEVER语句通知预编译程序如何处理三种异常:WHENEVER SQLERROR:通知预编译程序产生处理错误的代码(SQLSTATE0).WHENEVER SQLWARNING:通知预编译程序产生处理警报的代码(SQLSTATE=1).
6、WHENEVER NOT FOUND:通知预编译程序产生没有查到内容的代码(SQLSTATE=100).,9.2 嵌入式 SQL,用户可指定预编译程序采取以下行为:WHENEVERGOTO:通知预编译程序产生一条转移语句。WHENEVERCONTINUE:通知预编译程序让程序控制流转入到下一个主语言语句。WHENEVERCALL:通知预编译程序调用函数。其完整语法如下:WHENEVER SQLWARNING|SQLERROR|NOT FOUND CONTINUE|GOTO stmt_label|CALL function()(4)应用程序体 若干可执行SQL语句及主语言语句。提交和退出数据库:
7、COMMIT WORK RELEASE;,9.2 嵌入式 SQL,四、嵌入式SQL的使用技术1.无游标的操作 说明性语句 数据定义语句数据控制语句 数据插入语句非当前形式的UPDATE、DELETE语句语句查询结果为单记录的SELECT2.带游标的查询操作 查询结果为多记录。当前形式的UPDATE、DELETE语句,9.2 嵌入式 SQL,游标语句作用:把对集合的操作转换为对单个记录的处理。使用游标的步骤为:(1)定义游标 分配缓冲区并对应查询语句。格式:EXEC SQL DECLARE CURSOR FOR;,9.2 嵌入式 SQL,(2)打开游标 执行相应的语句,把查询结果取到缓冲区中。格
8、式:EXEC SQL OPEN;(3)推进游标 推进游标指针并取当前记录。格式:EXEC SQL FETCH INTO:,:,(4)关闭游标 释放缓冲区及其他资源。格式:EXEC SQL CLOSE;,查询语句,SELECT结果12n,主变量,9.2 嵌入式 SQL,例9.6使用游标的示例。#include EXEC SQL BEGIN DECLARE SECTION VARCHAR uid20;INT st_no;CHAR c_no4;FLOAT sc_grade;EXEC SQL END DECLARE SECTION;/*SQL中使用的主变量说明*/void main()strcpy(u
9、id,”YIN”);EXEC SQL WHENEVER SQLEXCEPTION GOTO error_abort;EXEC SQL CONNECT TO student_db USER:uid;/*建立与DB的连接*/printf(“connected to student_db by User%sn”,uid);EXEC SQL DECLARE cu1 CURSOR FOR/*定义游标*/SELECT sno,cno,grade FROM sc WHERE sno=:st_no;scanf(“please enter the student no:%d”,st_no);EXEC SQL O
10、PEN cu1;/*打开游标*/,9.2 嵌入式 SQL,EXEC SQL WHENEVER NOT FOUND DO BREAK;printf(“sno course_no graden”);for(;)EXEC SQL FETCH cu1 INTO:st_no,:c_no,:sc_grade;/*推进游标*/printf(“%-10d,%-4s,%-8.2fn”,st_no,c_no,sc_grade);EXEC SQL CLOSE cu1;/*关闭游标*/EXEC SQL WHENEVER SQLEXCEPTION CONTINUE;EXEC SQL COMMIT WORK RELEAS
11、E;/*提交并退出DB*/EXEC SQL DISCONNECT CURRENT;/*撤消当前连接*/exit(0);,五、动态 SQL,动态SQL:程序运行时动态指定SQL语句。有3种基本形式:(1)条件可变(2)数据库对象、查询条件均可变(3)语句可变实现方式:1直接执行的动态SQL方法:定义一个串主变量,程序在执行时提示输入SQL语句。2带动态参数的动态SQL方法:在SQL语句中含有临时占位变量,在此语句执行前,程序提示输入相应参数以取代这些变量。3.查询类的动态SQL(用于查询结果为集合且需返回的情况)方法:定义一个串主变量,程序在执行时动态设置或提示输入SQL语句。一般需用游标。,五
12、、动态 SQL,动态SQL执行过程:(1)执行PREPARE语句要求DBMS分析、确认和优化语句,并为其生成执行计划。语句格式:PREPARE FROM:功能:接收含有SQL语句的主变量,并把该语句送到DBMS。DBMS编译该语句并生成执行计划。(2)用EXECUTE语句执行”执行计划”。P.269 例 9.7注意以下几句:strcpy(select_st,”SELECT sno,sname,age FROM student WHERE”);scanf(“please enter the query condition:%sn”,query_f);strcat(select_st,query_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 访问 系统 建模 要点 课件

链接地址:https://www.31ppt.com/p-4095683.html