第9章-数据库访问与系统建模要点课件.ppt

上传人:小飞机 文档编号:4095683 上传时间:2023-04-03 格式:PPT 页数:41 大小:340.50KB
返回 下载 相关 举报
第9章-数据库访问与系统建模要点课件.ppt_第1页
第1页 / 共41页
第9章-数据库访问与系统建模要点课件.ppt_第2页
第2页 / 共41页
第9章-数据库访问与系统建模要点课件.ppt_第3页
第3页 / 共41页
第9章-数据库访问与系统建模要点课件.ppt_第4页
第4页 / 共41页
第9章-数据库访问与系统建模要点课件.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《第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_

13、f);/*将SQL查询语句保存在变量select_st中*/EXEC SQL PREPARE sql_st FROM:select_st/*生成执行计划*/EXEC SQL DECLARE st_cursor CURSOR FOR sql_st,五、动态 SQL,补充例:在sc表中插入一条记录,记录的值由程序决定。#include#include main()EXEC SQL BEGIN DECLARE SECTION;char perp=“INSERT INTO sc VALUES(?,?,?)”;char sno6;char cno4;int grade;EXEC SQL END DECL

14、ARE SECTION;EXEC SQL CONNECT TO student USER sa.;,参数标志,五、动态 SQL,EXEC SQL PREPARE prep_stat FROM:prep;if(SQLSTATE=0)/*SQL语句执行成功*/strcpy(sno,”995201”);strcpy(cno,”c601”);grade=76;EXEC SQL EXECUTE prep_stat USING:sno,:cno,:grade;,代替准备语句中的参数标志“?”,9.3 数据库接口技术,指为支持DB应用开发而提供的各种标准应用程序编程接口。1.典型的数据库应用接口(1)ODB

15、C(开放式数据库互联)提供了一组对数据库访问的标准应用程序编程接口,使用户通过SQL可访问不同的关系数据库。(2)OLE(对象连接与嵌入数据库)建立于 ODBC 之上,并将此技术扩展为提供更高级数据访问接口的组件结构。(3)SQL/CLI(SQL调用级接口)是SQL的应用编程接口,它等于核心ODBC API。它定义了一套公共函数,从一个主语言应用程序可以调用这些函数,连接到数据库。(4)JDBC(Java数据库连接)是基于Java语言的数据访问接口,具有平台无关性。适合于Internet上异构环境的数据库应用。(5)ADO.NET 是在微软.NET编程环境中优先使用的数据访问接口。提供了平台互

16、用性和可伸缩的数据访问,功能强、易用、高效。(6)OTL 是一个C+编译中操控关系数据库的模板库。,2.开放式接口-ODBC,ODBC API,ODBC应用程序层接口:供DB应用程序开发人员使用。,由各个DB厂商提供。它提供对具体DB操作接口,是应用程序对各数据源发出操作的实际执行者,(1)ODBC应用系统的体系结构:,2.开放式接口-ODBC,(2)连接过程:,常用:MFC的ODBC类ODBC 3.0,要求与数据源连接,确定合适的ODBC驱动,服务器处理请求,查询提交,查询操作,3.调用级接口-JDBC,JDBC API,JDBC驱动程序API,3.调用级接口-JDBC,JDBC的特点:具有

17、硬件平台、OS异构性支持JDBC驱动程序可通过Web浏览器自动下载,无须安装、配置。,JDBC编程主要步骤:登记并加载JDBC驱动器。建立与SQL数据库的连接;传送一个SQL操作;获得数据结果;,3.调用级接口-JDBC,JDBC编程要点-Java应用为例:(1)Import java.Sql.*;(2)加载相应的JDBC驱动程序。若以加载jdbc-odbc 桥为例:Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver);(3)定义JDBC的URL对象。例如:String conURL=”jdbc:odbc:TestDB”;/设置的要创建的数据源(4)连接数据

18、库。Connection s=DriverManager,getConnection(conURL);(5)使用SQL语句对数据库进行操作。(6)解除连接并关闭数据库。例如:S.close();,例:【图9-6】P.273,4.通用级接口-ADO.NET,是在微软.NET编程环境中优先使用的数据访问接口。是一组用于和数据源进行交互的面向对象类库,允许和不同类型的数据源交互,功能强、易用、高效。该类库中的类提供了众多对象,分别完成与数据库的连接、查询、插、删和更新记录等操作。1.ADO.NET查询数据库的步骤:1)创建一个数据库链路;2)请求一个记录集合;3)把记录集合暂存到数据集(可放多个数据

19、集);4)关闭数据库链路;5)在数据集上查询。,2.ADO.NET访问基本步骤,ADO.NET提供了两种读取数据库的方式:1)通过DataReader对象读取数据。只能读取DB,效率高。2)通过数据集DataSet和DataAdapter对象访问和操作数据。方式灵活,可对DB进行各种操作。ADO.NET访问数据库的步骤(方式2为例):1)使用Connection对象创建一个数据库链路。2)使用Command或DataAdapter对象请求一个记录集合。3)把记录集合暂存到DataSet中(可容纳多个数据集合)如果需要,返回第2步。4)关闭数据库链路。5)在DataSet上进行所需要的操作。重要

20、概念:DataSet-是不依赖于数据库的独立数据集合,即使断开数据链路或者关闭数据库,其依然可用。,9.4 数据库系统建模方法,一.UML 简介统一建模语言(Unified Modeling Language,UML)是进行系统分析和设计的重要工具,数据库系统设计中,常应用UML表示中的类图来建立信息模型。用来对软件进行可视化建模。是用于对面向对象的产品进行说明、可视化和编制文档一种标准语言。适于数据/对象/业务建模。使开发者专注于建立产品的模型和结构,模型可被UML工具转化成指定的程序代码。是DBS设计的一种新方法。UML概括了软件工程、建模和管理、数据库设计等许多方法学,在众多设计领域获得

21、流行。,二、UML的特点(1)面向对象、表示能力强(2)独立于过程、独立于语言(3)易于使用、方便集成,三、UML的表示法,是标准的一组符号的图形表示法。标准建模语言UML的主要表示可由下列五类图组成:第一类是用例图。用例图从用户角度描述系统功能,并指出各功能的操作者。第二类是静态图。静态图包括类图、对象图和包图。其中类图描述系统中类的静态结构。第三类是行为图。行为图描述系统的动态模型和组成对象间的交互关系。第四类是交互图。交互图描述对象间的交互关系。第五类是实现图。实现图中的配置图定义系统中软硬件的物理体系结构。,四、UML的E-R建模,UML是进行系统分析和设计的重要工具,DBS设计中,常

22、用UML中的类图来进行E-R建模(概念建模)。仅描述 UML 如何处理 E-R 建模的核心元素。1.UML中的实体类型,四、UML的E-R建模,2.在UML中表示联系在UML中,类之间的联系被称为关联,而联系类型被称为关联类型。UML图为关联类型附加了比在E-R图中更丰富的语义。(1)不带属性的关联,关联,四、UML的E-R建模,(2)带属性的关联-关联类关联类也用矩形表示,且含该联系上的属性,但用一条虚线将它连到相关的联系上。关联类和联系的名称必须相关。,四、UML的E-R建模,3.UML中的简单约束(1)关联中的码约束主码约束、外码约束允许:用,帮助理解UML中约束。(2)重复度约束(mu

23、ltiplicity constraint)UML 中类之间的联系双方线上的数字指定了参与该联系的可能实体(对象)的数量,称为“重复度约束”。关联到类A和类B的角色R上的一个重复度约束,是附加到R上的形如n.m的范围定义,它给出了类A可关联到类B实体数目的下限和上限。简写范围*的意思是:0.*,范围1的意思是:1.1。注意:UML图中重复度约束与E-R图中基数表示形式相似,但位置相反。,3.UML 中的简单约束:主码约束、外码约束,重复度约束,注释:说明约束,五、UML的高级建模,1类层次在UML中,父类与子类联系(Is A联系)被称为一般联系,用一个子类指向一个父类的实心箭头表示。,覆盖,不

24、相交约束,2依赖关系-Part-of联系,Part-of联系是需要依赖的两个实体类型之间的一种依赖关系。UML 分为两种形式的实体类型间的依赖关系。在UML中,非独占part-of联系(其部分可以独立存在)被称为聚合。如:教室与座椅。UML聚合用特殊的符号-一条带有中空菱形的线表示,UML中聚合是在聚合方用中空菱形表示。与UML中的聚合相伴随的常是重复度约束。例:,独占part-of联系在UML中被称为复合。如:会议与参会者复合可以被看作一种特殊的聚合,用一端带有实菱形的线表示。例:,3.E-R模型与UML表示,1)E-R模型设计 E-R模型的基本组件和UML的非常相似,UML类图向关系模型的

25、转换与E-R图方法相同,主要问题是正确转换图中的约束。E-R模型的UML表示例:【例】有价证证券公司是一个经纪公司,它为客户买卖股票。主要参与者是经纪人和客户。该公司在不同的城市地点设有营业厅,每个营业厅有一个主管、多个经纪人;每个经纪人在营业厅之一工作,一个经纪人可以是其所在的一个营业厅的主管。一个客户可以有多个帐户,且任何帐户可有多个拥有者。每个帐户只能有一个经纪人管理,一个经纪人可以管理多个帐户,但在一个给定营业厅中,一个客户不能有多个帐户。,客户/经纪人信息的E-R图,2)UML表示,3)其他UML表示,UML表示的其他部分对于数据库应用系统的建模也是有用的。如:用UML用例图来描述该应用系统的用户交互与系统功能;用UML顺序图来构建用例的动态方面;用UML状态图来描述该系统中不同对象的行为;UML活动图可用于说明行为是如何协同的;协作图可用于描述组成一个复杂系统的不同对象之间的交互,即消息交换;还需要有构件图、部署图等更多的内容来描述整个系统的构建。,第9章 数据库访问技术,要点:1.数据库访问-嵌入式 SQL/动态SQL2.数据库访问接口开放式接口-ODBC调用级接口-JDBC通用级接口-ADO.NET 3.数据库结构的UML表示,本章思考题:1、为什么引入嵌入式SQL?2、描述ODBC、JDBC之间的一些主要区别?3、UML表示与E-R法相比较有何特点?,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号