版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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与主语言语句?前缀加EXECSQL,结束处用ENDEXEC(或用分号)例:嵌入到C程序中:EXECSQL;嵌入到Java程序中:#SQL;(2)如何区分主变量与SQL的列变量?主变量前加冒号。如::Cname,(3)主变量与SQL的列变量如
4、何交互、转换?需要有一种机制:能将SQL中的集合量逐个送入主变量内,供主程序使用。方法:用一组游标语句。,9.2嵌入式SQL,3、SQL语句与主语言间的通信:1)主语言向SQL语句提供参数;2)向主语言传递SQL的执行状态;3)将SQL操作结果交主语言进一步处理,嵌入式SQL工作原理:,主语言程序,SQL语句,游标,主变量,SQL状态,9.2嵌入式SQL,三、嵌入式SQL的程序组成嵌入式SQL语句可分为:可执行语句(数据定义、控制、操纵)说明性语句(说明变量、游标)程序的主要部分(1)DECLARE段(用于定义主变量)格式:EXECSQLBEGINDECLARESECTION;/主变量说明EX
5、ECSQLENDDECLARESECTION;(2)CONNECT语句(建立SQL连接)格式:EXECSQLCONNECTTOUSER;,9.2嵌入式SQL,(3)WHENEVER语句使用WHENEVER语句可以简化每条嵌入式SQL语句后编写检查SQLSTATE值的程序。WHENEVER语句通知预编译程序如何处理三种异常:WHENEVERSQLERROR:通知预编译程序产生处理错误的代码(SQLSTATE0).WHENEVERSQLWARNING:通知预编译程序产生处理警报的代码(SQLSTATE=1).WHENEVERNOTFOUND:通知预编译程序产生没有查到内容的代码(SQLSTATE=
6、100).,9.2嵌入式SQL,用户可指定预编译程序采取以下行为:WHENEVERGOTO:通知预编译程序产生一条转移语句。WHENEVERCONTINUE:通知预编译程序让程序控制流转入到下一个主语言语句。WHENEVERCALL:通知预编译程序调用函数。其完整语法如下:WHENEVERSQLWARNING|SQLERROR|NOTFOUNDCONTINUE|GOTOstmt_label|CALLfunction()(4)应用程序体若干可执行SQL语句及主语言语句。提交和退出数据库:COMMITWORKRELEASE;,9.2嵌入式SQL,四、嵌入式SQL的使用技术1.无游标的操作说明性语句
7、数据定义语句数据控制语句数据插入语句非当前形式的UPDATE、DELETE语句语句查询结果为单记录的SELECT2.带游标的查询操作查询结果为多记录。当前形式的UPDATE、DELETE语句,9.2嵌入式SQL,游标语句作用:把对集合的操作转换为对单个记录的处理。使用游标的步骤为:(1)定义游标分配缓冲区并对应查询语句。格式:EXECSQLDECLARECURSORFOR;,9.2嵌入式SQL,(2)打开游标执行相应的语句,把查询结果取到缓冲区中。格式:EXECSQLOPEN;(3)推进游标推进游标指针并取当前记录。格式:EXECSQLFETCHINTO:,:,(4)关闭游标释放缓冲区及其他资
8、源。格式:EXECSQLCLOSE;,查询语句,SELECT结果12n,主变量,9.2嵌入式SQL,例9.6使用游标的示例。#includeEXECSQLBEGINDECLARESECTIONVARCHARuid20;INTst_no;CHARc_no4;FLOATsc_grade;EXECSQLENDDECLARESECTION;/*SQL中使用的主变量说明*/voidmain()strcpy(uid,”YIN”);EXECSQLWHENEVERSQLEXCEPTIONGOTOerror_abort;EXECSQLCONNECTTOstudent_dbUSER:uid;/*建立与DB的连接*
9、/printf(“connectedtostudent_dbbyUser%sn”,uid);EXECSQLDECLAREcu1CURSORFOR/*定义游标*/SELECTsno,cno,gradeFROMscWHEREsno=:st_no;scanf(“pleaseenterthestudentno:%d”,st_no);EXECSQLOPENcu1;/*打开游标*/,9.2嵌入式SQL,EXECSQLWHENEVERNOTFOUNDDOBREAK;printf(“snocourse_nograden”);for(;)EXECSQLFETCHcu1INTO:st_no,:c_no,:sc_g
10、rade;/*推进游标*/printf(“%-10d,%-4s,%-8.2fn”,st_no,c_no,sc_grade);EXECSQLCLOSEcu1;/*关闭游标*/EXECSQLWHENEVERSQLEXCEPTIONCONTINUE;EXECSQLCOMMITWORKRELEASE;/*提交并退出DB*/EXECSQLDISCONNECTCURRENT;/*撤消当前连接*/exit(0);,五、动态SQL,动态SQL:程序运行时动态指定SQL语句。有3种基本形式:(1)条件可变(2)数据库对象、查询条件均可变(3)语句可变实现方式:1直接执行的动态SQL方法:定义一个串主变量,程序在
11、执行时提示输入SQL语句。2带动态参数的动态SQL方法:在SQL语句中含有临时占位变量,在此语句执行前,程序提示输入相应参数以取代这些变量。3.查询类的动态SQL(用于查询结果为集合且需返回的情况)方法:定义一个串主变量,程序在执行时动态设置或提示输入SQL语句。一般需用游标。,五、动态SQL,动态SQL执行过程:(1)执行PREPARE语句要求DBMS分析、确认和优化语句,并为其生成执行计划。语句格式:PREPAREFROM:功能:接收含有SQL语句的主变量,并把该语句送到DBMS。DBMS编译该语句并生成执行计划。(2)用EXECUTE语句执行”执行计划”。P.269例9.7注意以下几句:
12、strcpy(select_st,”SELECTsno,sname,ageFROMstudentWHERE”);scanf(“pleaseenterthequerycondition:%sn”,query_f);strcat(select_st,query_f);/*将SQL查询语句保存在变量select_st中*/EXECSQLPREPAREsql_stFROM:select_st/*生成执行计划*/EXECSQLDECLAREst_cursorCURSORFORsql_st,五、动态SQL,补充例:在sc表中插入一条记录,记录的值由程序决定。#include#includemain()EX
13、ECSQLBEGINDECLARESECTION;charperp=“INSERTINTOscVALUES(?,?,?)”;charsno6;charcno4;intgrade;EXECSQLENDDECLARESECTION;EXECSQLCONNECTTOstudentUSERsa.;,参数标志,五、动态SQL,EXECSQLPREPAREprep_statFROM:prep;if(SQLSTATE=0)/*SQL语句执行成功*/strcpy(sno,”995201”);strcpy(cno,”c601”);grade=76;EXECSQLEXECUTEprep_statUSING:sno
14、,:cno,:grade;,代替准备语句中的参数标志“?”,9.3数据库接口技术,指为支持DB应用开发而提供的各种标准应用程序编程接口。1.典型的数据库应用接口(1)ODBC(开放式数据库互联)提供了一组对数据库访问的标准应用程序编程接口,使用户通过SQL可访问不同的关系数据库。(2)OLE(对象连接与嵌入数据库)建立于ODBC之上,并将此技术扩展为提供更高级数据访问接口的组件结构。(3)SQL/CLI(SQL调用级接口)是SQL的应用编程接口,它等于核心ODBCAPI。它定义了一套公共函数,从一个主语言应用程序可以调用这些函数,连接到数据库。(4)JDBC(Java数据库连接)是基于Java
15、语言的数据访问接口,具有平台无关性。适合于Internet上异构环境的数据库应用。(5)ADO.NET是在微软.NET编程环境中优先使用的数据访问接口。提供了平台互用性和可伸缩的数据访问,功能强、易用、高效。(6)OTL是一个C+编译中操控关系数据库的模板库。,2.开放式接口-ODBC,ODBCAPI,ODBC应用程序层接口:供DB应用程序开发人员使用。,由各个DB厂商提供。它提供对具体DB操作接口,是应用程序对各数据源发出操作的实际执行者,(1)ODBC应用系统的体系结构:,2.开放式接口-ODBC,(2)连接过程:,常用:MFC的ODBC类ODBC3.0,要求与数据源连接,确定合适的ODB
16、C驱动,服务器处理请求,查询提交,查询操作,3.调用级接口-JDBC,JDBCAPI,JDBC驱动程序API,3.调用级接口-JDBC,JDBC的特点:具有硬件平台、OS异构性支持JDBC驱动程序可通过Web浏览器自动下载,无须安装、配置。,JDBC编程主要步骤:登记并加载JDBC驱动器。建立与SQL数据库的连接;传送一个SQL操作;获得数据结果;,3.调用级接口-JDBC,JDBC编程要点-Java应用为例:(1)Importjava.Sql.*;(2)加载相应的JDBC驱动程序。若以加载jdbc-odbc桥为例:Class.forName(”sun.jdbc.odbc.JdbcOdbcDr
17、iver);(3)定义JDBC的URL对象。例如:StringconURL=”jdbc:odbc:TestDB”;/设置的要创建的数据源(4)连接数据库。Connections=DriverManager,getConnection(conURL);(5)使用SQL语句对数据库进行操作。(6)解除连接并关闭数据库。例如:S.close();,例:【图9-6】P.273,4.通用级接口-ADO.NET,是在微软.NET编程环境中优先使用的数据访问接口。是一组用于和数据源进行交互的面向对象类库,允许和不同类型的数据源交互,功能强、易用、高效。该类库中的类提供了众多对象,分别完成与数据库的连接、查询
18、、插、删和更新记录等操作。1.ADO.NET查询数据库的步骤:1)创建一个数据库链路;2)请求一个记录集合;3)把记录集合暂存到数据集(可放多个数据集);4)关闭数据库链路;5)在数据集上查询。,2.ADO.NET访问基本步骤,ADO.NET提供了两种读取数据库的方式:1)通过DataReader对象读取数据。只能读取DB,效率高。2)通过数据集DataSet和DataAdapter对象访问和操作数据。方式灵活,可对DB进行各种操作。ADO.NET访问数据库的步骤(方式2为例):1)使用Connection对象创建一个数据库链路。2)使用Command或DataAdapter对象请求一个记录集
19、合。3)把记录集合暂存到DataSet中(可容纳多个数据集合)如果需要,返回第2步。4)关闭数据库链路。5)在DataSet上进行所需要的操作。重要概念:DataSet-是不依赖于数据库的独立数据集合,即使断开数据链路或者关闭数据库,其依然可用。,9.4数据库系统建模方法,一.UML简介统一建模语言(UnifiedModelingLanguage,UML)是进行系统分析和设计的重要工具,数据库系统设计中,常应用UML表示中的类图来建立信息模型。用来对软件进行可视化建模。是用于对面向对象的产品进行说明、可视化和编制文档一种标准语言。适于数据/对象/业务建模。使开发者专注于建立产品的模型和结构,模
20、型可被UML工具转化成指定的程序代码。是DBS设计的一种新方法。UML概括了软件工程、建模和管理、数据库设计等许多方法学,在众多设计领域获得流行。,二、UML的特点(1)面向对象、表示能力强(2)独立于过程、独立于语言(3)易于使用、方便集成,三、UML的表示法,是标准的一组符号的图形表示法。标准建模语言UML的主要表示可由下列五类图组成:第一类是用例图。用例图从用户角度描述系统功能,并指出各功能的操作者。第二类是静态图。静态图包括类图、对象图和包图。其中类图描述系统中类的静态结构。第三类是行为图。行为图描述系统的动态模型和组成对象间的交互关系。第四类是交互图。交互图描述对象间的交互关系。第五
21、类是实现图。实现图中的配置图定义系统中软硬件的物理体系结构。,四、UML的E-R建模,UML是进行系统分析和设计的重要工具,DBS设计中,常用UML中的类图来进行E-R建模(概念建模)。仅描述UML如何处理E-R建模的核心元素。1.UML中的实体类型,四、UML的E-R建模,2.在UML中表示联系在UML中,类之间的联系被称为关联,而联系类型被称为关联类型。UML图为关联类型附加了比在E-R图中更丰富的语义。(1)不带属性的关联,关联,四、UML的E-R建模,(2)带属性的关联-关联类关联类也用矩形表示,且含该联系上的属性,但用一条虚线将它连到相关的联系上。关联类和联系的名称必须相关。,四、U
22、ML的E-R建模,3.UML中的简单约束(1)关联中的码约束主码约束、外码约束允许:用,帮助理解UML中约束。(2)重复度约束(multiplicityconstraint)UML中类之间的联系双方线上的数字指定了参与该联系的可能实体(对象)的数量,称为“重复度约束”。关联到类A和类B的角色R上的一个重复度约束,是附加到R上的形如n.m的范围定义,它给出了类A可关联到类B实体数目的下限和上限。简写范围*的意思是:0.*,范围1的意思是:1.1。注意:UML图中重复度约束与E-R图中基数表示形式相似,但位置相反。,3.UML中的简单约束:主码约束、外码约束,重复度约束,注释:说明约束,五、UML的高级建模,1类层次在UML中,父类与子类联系(IsA联系)被称为一般联系,用一个子类指向一个父类的实心箭头表示。,覆盖,不相交约束,2依赖关系-Part-of联系,Part-of联系是需要依赖的两个实体类型之间的一种依赖关系。UML分为两种形式的实体类型间的依赖关系。在UML中,非独占part-of联系(其部分可以独立存在)被称为聚合。如:教室与座椅。UML聚合用特殊的符号-一条带有中空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 放射医学技术专项测试题附答案(六)
- 教育行业中的创新创业教育项目分析
- 2025年度专业打印设备智能化升级改造及售后合同可打印协议书下载3篇
- 教育科技在儿童早期认知发展中的价值挖掘
- 现代商业中的安全生产与风险控制
- 校园文化在学生综合素质评价中的作用研究
- 小学美术教学与科技发展的互动关系
- 二零二五年度窗帘市场调研与分析服务合同12篇
- 二零二五年度户外展览搭棚及设备租赁合同3篇
- 二零二五年度户外遮阳窗帘安装与维护协议3篇
- 2024年安全教育培训试题附完整答案(夺冠系列)
- 2025新译林版英语七年级下单词默写表
- 《锡膏培训教材》课件
- 断绝父子关系协议书
- 福建省公路水运工程试验检测费用参考指标
- 《工程勘察资质分级标准和工程设计资质分级标准》
- 小学语文阅读教学落实学生核心素养方法的研究-中期报告
- 眼内炎患者护理查房课件
- 2021-2022学年四川省成都市武侯区部编版四年级上册期末考试语文试卷(解析版)
- 中国传统文化服饰文化
- 大气污染控制工程 第四版
评论
0/150
提交评论