第八章数据库编程_数据库原理.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章数据库编程_数据库原理

第八章 数据库编程 8.1 嵌入式SQL 8.2 存储过程 8.3 ODBC编程 8.1 嵌入式SQL 建立数据库后就要开发应用系统了。标准化SQL是非过程化的查询语言,具有操作统一、面向集合、功能丰富、使用简单等多项优点。但和程序设计语言相比,高度非过程化的优点同时也成了它的缺点:缺少流程控制能力,难以实现业务中的逻辑控制,SQL编程技术可以有效克服这一缺点,提高应用系统和RDBMS间互操作性。 应用系统中使用SQL编程来访问和管理数据库中数据的方式主要有:嵌入式SQL、PL/SQL(存储过程)、ODBC编程、JDBC编程和OLEDB编程等方式。 8.1.2 嵌入式SQL与主语言的通信 数据库工作单元与源程序工作单元之间的通信主要包括: 1、向主语言传递SQL语句执行状态信息,使主语言能够据此信息控制程序流程,主要用SQL通信区SQL Communication Area(简称SQLCA)实现; 2、主语言向SQL语句提供参数,主要用主变量(Host Variable)实现; 3、将SQL语句查询数据库的结果交给主语言处理,主要用主变量和游标(Cursor)实现。 一、SQL通信区 SQL语句执行后,系统要反馈给主语言若干信息主要包括描述系统当前工作状态的运行环境的各种数据。这些信息将送到SQLCA中。主语言从SQLCA中取出这些状态信息,据些决定接下来的的流程。 SQLCA在应用程序中要事先加以定义,一般都是系统级变量。SQLCA中有一个变量SQLCODE用来存放每次执行SQL语句后返回的状态代码。 主语言每执行完一条SQL语句之后都不得应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理。 二、主变量 嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据。SQL语句中使用的主语言程序变量简称为主变量。 主变量根据其作用的不同,分为输入主变量和输出主变量。输入主变量由主语言对其赋值,SQL引用;输出主变量由SQL语句对其赋值或设置状态信息,返回给主语言。 一个主变量可以附带一个任选的指示变量(Indicator Variable)。指示变量是一个整型变量,用来“指示”所指主变量的值或条件。指示变量可以指示输入主变量是否为空值,可以检测输出主变量是否是空值,值是否被截断。 所有主变量的指示变量必须在SQL语句{}之间进行说明。说明之后,主变量可以在SQL语句中任何一个能够使用表达式的地方出现,为了与数据库对象名区别,SQL语句中的主变量名和指示变量前要加“:”作为标志。 三、游标 SQL是面向集合的,一条SQL语句可以产生或处理多条记录。而主语言是面向记录的,一组变量一次只能存取一条记录。所以需要用游标来协调这两种不同的处理方式。 游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标都有一个名字,用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。 四、建立和关闭数据库连接 嵌入式SQL程序要访问数据库必须先连接数据库。RDBMS根据用户信息对连接请求进行合法性验证,只有通过身份验证,才能建立一个合法连接。 1、建立数据库连接 2、关闭数据库连接 当某个连接上的所有数据库操作完成后,应用程序应该主动释放所占用的连接资源。 8.1.3 不用游标的SQL语句 有的ESQL语句不需要使用游标,它们是:说明性语句、数据定义语句、数据控制语句、查询结果为单记录的SELECT语句、非CURRENT形式的增删语句。 一、查询结果为单记录的SELECT语句 例: 根据学生学号查询学生信息,假设已经把要查询的学号赋给了主变量givensno EXEC SQL SELECT SNO,SNAME,SSEX,SAGE,SDEPT INTO:HSNO,:HNAME,:HSEX,:HAGE,:HDEPT FROM STUDENT WHERE SNO=:givensno; 二、非CURRENT形式的增删改语句 有些增删语句不需要使用游标,不是CURRENT形式的,在UPDATE的SET子句和WHERE子句中可以使用主变量,SET子句还可以使用指示变量。 EXEC SQL UPDATE sc SET grade=:newgrade WHERE sno=:givensno; sageid=-1; EXEC SQL UPDATE student SET sage=NULL WHERE sdept=CS; EXEC

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档