中英翻译(吴伟斌).doc_第1页
中英翻译(吴伟斌).doc_第2页
中英翻译(吴伟斌).doc_第3页
中英翻译(吴伟斌).doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用程序依赖DBMS管理数据作为独立的过程中,跑到intertact连接到数据库系统。一旦建立好连接,SQL命令可以用来插入、删除和修改数据。SQL查询可以用来再试所需要的数据,但是我们需要一个重要区别桥如何看到一个数据库系统数据和应用程序如何在语言,如Java或C看到数据:数据库查询的结果是一个集或记录,但Java没有设置或多集的数据类型。这失配是通过外加SQL构建解决,允许应用程序以获得一个处理在一个收集和遍历这些记录一次一个人说。我们介绍嵌入式SQL,动态QQL,游标在6.1节。嵌入式SQL允许存取数据的应用中使用静态SQL查询代码(6.1.1节); 用动态SQL,我们能创造询问在运行时(6.1.3节)。游标集之间的隔阂和编程语言查询的答案不支持集值(6.1.2节)。Java的出现作为一个流行的应用程序开发语言,特别是互联网应用程序,Java代码数据库的访问从一个特别重要的课题。第6.2节包括JDBC,编程的接口,让执行SQL查询,从一个Java程序和使用的结果,在Java程序。JDBC提供更强大的可移植性嵌入式SQL或动态SQL比,并提出了相应的能力没有重新完成连接多个数据库代码。第6.4节覆盖SQL,这也同样对静态SQL查询,但casier Java程序中,与JDBC。通常,是很有用的代码执行应用数据库服务器,而不仅仅是再试数据和执行应用程序逻辑在一个单独的过程。第6.6节包括存储过程,使应用程序逻辑存储在数据库服务器上执行。我们终章通过案例讨论B&N在6.6节。在写数据库应用程序。我们必须牢记,许多应用程序通常并发运行。交易的概念,介绍了在第一章是用来封装应用程序的影响数据库。应用程序可以选择某些交易通过SQL命令来控制特性的程度的变化是接触到其他并发运行应用程序。我们触摸的交易理念在很多方面在这一章,特别是transaction-related方面覆盖JDBC。完全讨论交易性质和SQL记账采用借贷记账法的支持是推迟到第十六章。6.1 从应用程序访问数据库在本节中,我们讨论如何执行SQL命令可以在一个程序在一个宿主语言如C或Java。使用SQL命令在一个宿主语言的程序被称为嵌入式SQL。嵌入式SQL的细节也取决于主持人的语言。虽然类似的能力是支持多种主持人语言、语法有时是不同的。我们首先满足基本要求的嵌入式SQL和静态的SQL查询6.1.1节。然后,我们6.1.25节介绍指针。我们讨论动态SQL,它允许我们构建在运行时的SQL查询(执行)的部分6.1.3。6.1.1 嵌入式SQL理论上,嵌入SQL命令在一个宿主语言程序很简单。SQL语句(如下。,而不是声明),可用于无论的声明是允许宿主语言(限制更少)。SQL语句必须有明确的标志,一个预处理可以对付他们调用前编译器对寄主的语言。同时,任何主机语言变量用来传递参数转入一个SQL命令必须被声明,在SQL。特别是,一些特殊的安装语言变量必须被宣布,在SQL(这样,例如,任何错误条件SQL执行过程中出现的能沟通回到主要应用程序在宿主语言)。然而,并发症承受两记在心里。首先,承认的SQL数据类型不得认可的主持人的语言与行动或反之亦然。这是典型的错配上铸造值之前,通过他们适当或从SQL命令。(SQL,像其他的编程语言,提供了一种运算符,用来扔进一个值类型的价值观的另一种类型的)。第二个并发症与SQL被set-oriented,解决(请看段6.1.2使用指针。命令操作和生成报表,集。在我们讨论嵌入式SQL,我们认为语言是C语言的主人具体性,因为小差异存在于嵌入式SQL语句是如何在不同主机的语言。声明变量上下例外SQL语句可以参考变量定义在主程序中。这样的hostlanguage将以减号作为前缀变量必须是一个冒号(:),在SQL语句中,执行SQL命令宣布之间开始执行SQL声明区和结束声明部分。类似的声明,他们将会如何看一个C程序,和往常一样在C语言中,相隔分号。例如,我们可以声明变量c_sname,c_sid,c_rating,c_age(最初c作为命名约定要强调的是,这些都是主人语言变量)如下:EXEC SQL BEGIN DECLARE SECTIONchar c_sname20;long c_sid;short c_rating;float c_age;EXEC SQL END DECLARE SECTION第一个问题就是SQL类型相对应的各种C类型,因为我们刚刚宣布那个值集C变量是为了被读(并可能设置)在一个SQL运行时环境是指一个SQL语句是执行。SQL - 92标准定义了这样一种对应关系的语言类型和SQL类型主人数量的主机的语言。在我们的例子中,c_sname有字(20)当一个SQL语句所指,c_sid有型整数。c_rating SMALLINT有型,c_age有真实的。我们还需要一些为SQL来报告什么差错,如果发生错误的条件时,就产生了执行SQL语句的。SQL - 92标准承认两个特殊的变量报告错误,SQLCODE和所导致的。SQLCODE比较古老的定义两个,还有些负面价值当一个错误的情况出现。没有指定一个特定进一步正是错误负整数表示。导致引进的SQL - 92标准第一次,员工预定义的价值观与几种常见错误条件,从而引入一些均匀性错误是如何报道。这两个变量的一个必须声明。适当的C类型是漫长的,而且SQLCODE适当的C类型是导致煤焦6,也就是一个字符串五个字符长。(回忆null-terminator在C字符串。)在本章中,我们假设导致了。嵌入SQL语句所有的SQL语句,嵌入宿主程序必须有明确的标志,依赖于主人细节语言在C。SQL语句必须将以减号作为前缀SQL。一个SQL语句能从本质上出现在任何地方在宿主语言程序在宿主语言语句可以出现。作为一个简单的例子,下面的嵌入式SQL语句插入一行,其柱价值观是基于价值观热销的安装语言包含在其中较为简便,水手们的关系。EXEC SQLINSERT INTO Sailors VALUES (:c_sname,:c_sid,:c_rating,:c_age);观察到一个分号终止命令,按照惯例,为终止声明在C。所导致的变量应该检查错误和之后的每一个嵌入式SQL语句的例外。SQL命令提供每当简化繁琐的任务:EXEC SQL WHENEVER SWLERROR| NOT FOUNDCONTINUE|GOTO stmt意愿所导致的价值应检查每一个嵌入式SQL语句的执行。如果SQLERROR指定的值显示所导致的例外,控制转移到支撑,这也许是负责误差与例外处理。控制是也转移到如果没有找到指定支撑的值是02000年所导致的,是没有数据。6.1.2 游标一个主要的问题在许多嵌入SQL语句语言,如C是阻抗失配出现的,因为SQL操作组的记录,而语言如C不干净支持set-of-records抽象。解决的办法是本质上提供一个机制,允许我们一次检索行从关系。这个机制被称为光标。我们可以声明一个光标在任何关系或任何SQL查询(因为每个查询返回一组行)。一旦一个光标被宣告,我们能打开它(光标位置,就在第一排); 拿下一场争吵;移动光标(下一个划船、排在下一场n,第一行,或以前的排等。,通过指定额外的参数取指令);或关闭游标。因此,让我们找回光标基本上一个表的行光标定位在某一行和阅读内容。光标定义基本和用法让我们检查指针,在宿主语言编程,一个集排嵌入式SQL语句的计算: 我们通常需要打开光标如果嵌入的声明是一种选择(如下。一个查询)。然而,我们可以避免开个光标如果答案包含一个排,因为我们看到不久。 插入、删除和更新报表通常不需要光标,尽管一些变体删除及更新使用游标。作为例子,我们可以找出这个名字和年龄的一名水手,指定通过指定一个价值变量c_sid主持人宣布之前,如下:EXEC SQL SELECT S.sname,S.age INTO :_sname,:c_age FROM Sailors S WHERE S.sid = :c_sid;条款允许我们进入指定的列排主机的单一的答案c_sname和c_age变量。因此,我们不需要一个指针嵌入这个查询在一个宿主语言课程。但以下查询,进而电脑的姓名和年龄,所有的水手评级比的当前值变量c_minrating主人吗?DELETE S.sname,S.ageFROM Sailors SWHERE S.rating:c_minrating这个查询返回一个集行,而不是一个排。在执行时交互,答案是印在屏幕上。如果我们嵌入这个质疑一个C程序的前缀执行SQL命令的,怎么能答案会安装语言变量的品牌吗?进入条款是不充分的,因为我们必须处理几排。解决的办法是用光标:DECLARE sinfo CURSOR FORSELECT S.sname,S.ageFROM Sailors SWHERE S.rating:c.minrating;这个代码可以包含在一个C程序,一旦执行,光标sinfo界定。随后,我们能打开光标:OPEN sinfo;c_minrating的价值在SQL查询有关的光标的价值这个变量当我们打开该游标。(光标宣言是在编译处理,并打开命令是在运行时执行。)光标可以被认为是“指向”收藏的连续查询的答案相关。当光标是公开的,所以它被定位就在第一排。我们可以用取指令读第一排的光标sinfo进入宿主语言变量:FETCH sinfo INTO :c_sname,:c_age;当FETCH语句的执行,光标定位指向下一行(哪一个是第一个排在桌旁,取实行开放后第一次光标)及柱价值观排复制到相应的主机变量。通过反复执行本FETCH语句(比如在一while-loop C程序),我们可以阅读所有的行计算该查询,一排的一段时间。额外的参数,让我们去指挥位置光标在非常灵活的方式,但是我们不讨论他们。我们怎么知道当我们已经看过了所有的行联系在一起的光标?通过看SQLCODE或导致特殊的变量,当然。所导致的,例如,被设置到价值02000,是没有数据,表明没有更多的行如果FETCH语句的光标在最后一排。当我们做了一个光标,我们可以关闭它:CLOSE sinfo;它可以又开了,如果有需要的话,和价值的:c_minrating在SQL查询相关的价值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论