数据库 第7章 数据库应用编程_第1页
数据库 第7章 数据库应用编程_第2页
数据库 第7章 数据库应用编程_第3页
数据库 第7章 数据库应用编程_第4页
数据库 第7章 数据库应用编程_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、1 数据库原理及应用电子科技大学了解数据库应用程序的体系结构与开发过程;了解ODBC和JDBC数据库连接了解ASP.NET和JSP的Web数据库开发技术;掌握游标、存储过程、触发器的编程方法;能够使用一种编程语言,实现数据库应用编程。2 数据库原理及应用电子科技大学7.1 数据库应用程序概述1.数据库应用系统是由数据库系统、应用程序系统和用户组成,具体包括:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件和应用界面。2.数据库应用程序:一个通过向DBMS发出合适的SQL请求语句与数据库进行交互的计算机应用程序。(包括:数据库连接、SQL语句执行、数据库返回结果处理和人机交互界

2、面)3.数据库应用系统从作用范围的角度可分为三种类型:基于单机的数据库应用系统、基于局域网的客户-服务器(C/S)数据库应用系统、基于互联网的浏览器-服务器(B/S)的数据库应用系统。4.数据库应用程序的开发过程包含数据库开发过程和应用软件开发过程。3 数据库原理及应用电子科技大学 7.1.1 数据库应用程序结构数据库应用程序结构1. 三层架构(三层架构(3-tier Architecture)所谓三层体系架构是在客户端与数据库之间加入了一个中间件层,也叫组件层。三层是指逻辑上的三层。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常来说,客户端不与数据库直接进

3、行交互,而是与中间层建立连接,再经由中间层与数据库进行交互。表现层表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。业务逻辑层业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。数据访问层数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增加、删除、修改、查找等。4 数据库原理及应用电子科技大学 7.1.2 数据库应用开发方法数据库应用开发方法数据库类应用程序必须涉及到两个方面的内容,一方面是使用数据库工具建立库表,另一方面是使用开发工具开发应用程序,并通过数据库引擎来访问对应的数据库。因此,需要从数据库开发生命周

4、期(数据库开发生命周期(DDLCDDLC)和软件开发生命周期(软件开发生命周期(SDLCSDLC)两个方面来把握数据库应用程序的开发过程。1.1.数据库开发生命周期(数据库开发生命周期(DDLCDDLC)数据库开发生命周期是一个设计、实现和维护数据库系统的过程,需要符合组织战略和操作信息的需求。数据库开发生命周期与信息系统软件开发生命周期是内在关联的。DDLC与SDLC是同步进行的。2.2.软件开发生命周期(软件开发生命周期(SDLCSDLC)软件开发生命周期是开发可靠的、可维护的、高性能的应用程序和其他软件必须遵守的软件工程框架。软件过程开始于概念的探讨,期间经历一系列软件开发过程,结束于产

5、品的淘汰。5 数据库原理及应用电子科技大学1.1.数据库开发生命周期(数据库开发生命周期(DDLCDDLC)6 数据库原理及应用电子科技大学1.1.数据库开发生命周期(数据库开发生命周期(DDLCDDLC)了解企业或组织的运营状况,分析信息系统如何帮助解决经营过程中存在的问题,然后确定系统需求,完成功能规格说明书。可行性研究和需求分析涉及以下内容:(1)对现存系统和程序的分析(2)系统的技术可行性、操作可行性和经济可行性分析(3)信息需求和业务过程分析(4)运行环境和用户特征分析(5)性能和条件约束分析(6)数据项、数据量、数据存储和数据处理过程分析(7)数据属性和内在联系(数据依赖关系)分析

6、(8)数据操作需求分析(9)数据安全需求分析7 数据库原理及应用电子科技大学1.1.数据库开发生命周期(数据库开发生命周期(DDLCDDLC)确定符合组织需求的数据库模型(数据库的概念模型)。功能规格说明书作为数据库设计阶段的输入,进行基于选定的DBMS设计数据库的逻辑结构和物理结构,并完成数据库设计规格说明书。数据库设计涉及以下内容:(1)概念数据库设计,包括定义数据库的元素及相互之间的联系,定义特定数据项的取值约束(2)逻辑数据库设计(3)物理数据库设计8 数据库原理及应用电子科技大学1.1.数据库开发生命周期(数据库开发生命周期(DDLCDDLC)根据选定的DBMS,将详细的概念模型转化

7、为DBMS的实现模型。数据库实现阶段涉及的内容如下:(1)根据业务需求特点和运行环境进行DBMS选型(2)详细说明概念的、外部的和内部的数据定义 (3)概念模型到功能数据库的映射(4)构建数据字典(5)创建空的数据库文件(6)开发并实现应用程序软件(7)用户培训9 数据库原理及应用电子科技大学1.1.数据库开发生命周期(数据库开发生命周期(DDLCDDLC)加载应用数据,将旧系统切换到新系统10 数据库原理及应用电子科技大学1.1.数据库开发生命周期(数据库开发生命周期(DDLCDDLC)测试新的数据库,验证预期结果11 数据库原理及应用电子科技大学1.1.数据库开发生命周期(数据库开发生命周

8、期(DDLCDDLC)监控数据内容和应用程序的发展和扩充,并可能实施数据库模式的修改或重组12 数据库原理及应用电子科技大学 2. 2.软件开发生命周期(软件开发生命周期(DDLCDDLC)1.需要(或概念)阶段需要(或概念)阶段:研究和精炼概念,同时确定和分析客户(用户或计划)的需求。2.规格说明阶段规格说明阶段:将用户需求写成规格说明文档,阐述软件产品的预期功能。3.计划阶段计划阶段:草拟软件项目管理计划,细化软件开发的各个方面。4.设计阶段设计阶段:为实现软件规格说明文档中的功能而经历两个连续的设计阶段。第一个阶段是概要设计阶段;第二个阶段是详细设计阶段。这两个设计阶段的文档描述如何实现

9、软件产品。5.编程(编码或实现)阶段编程(编码或实现)阶段:用特定的计算机编程语言编写各个模块的代码。6.集成(测试)阶段集成(测试)阶段:完成模块的单独测试和集成测试,经历Alpha测试和Beta测试。7.维护阶段维护阶段:完成所有维护工作。当增强和更改软件时,需要更新相应的软件规格说明文档。13 数据库原理及应用电子科技大学 7.1.3 7.1.3 数据库应用开发技术数据库应用开发技术近年来,数据库应用程序三层架构不断发展,逐步取代了客户/服务器模式。在这种模式下,客户和数据库服务器之间增加了一个应用服务器。原先必须在客户上实现的复杂业务逻辑,全部集中到中间件上,完成了客户端的“减肥”。甚

10、至,客户端软件只需要安装普通的浏览器即可。在数据库应用开发过程中,首先需要建立数据库连接,使得应用程序能够与数据库进行数据访问操作。常见的数据库连接方式有ODBC、JDBC和ADO等。在Web数据库应用中,常见的两大技术是ASP(Active Server Pages)技术和JSP(JavaServer Pages)技术。ASP是一种使嵌入网页中的脚本可由Web服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建。JSP是在普通HTML中嵌入了Java程序片段(Scriptlet)和JSP标签的一个脚本技术。14 数据库原理及应用电子科技大学 7.2 7.2

11、数据库连接技术数据库连接技术应用程序在访问数据库时,需要与DBMS建立通信连接。但是,不同厂家的DBMS提供不同的数据库访问应用程序接口(Application Programming Interface,API)。因此,需要提供一种统一的数据库通信方式来屏蔽不同厂家的DBMS的API差异性。数据库连接中间件正是这样一种技术。本节主要介绍ODBC、JDBC和嵌入式SQL技术。(1)ODBC技术(2)JDBC技术(3)SQL与宿主语言15 数据库原理及应用电子科技大学 7.2.1 ODBC 7.2.1 ODBC技术技术ODBC(Open Database Connectivity,开放数据库互连

12、)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。这些API利用SQL来完成其大部分任务。1.ODBC1.ODBC接口接口为了在Windows平台下提供统一的数据库访问方式,Microsoft公司于1992年推出了ODBC产品,并提供ODBC API,使应用程序与DBMS在逻辑上分离,应用程序只需要调用ODBC API,由ODBC驱动程序将调用请求转换为对特定数据库的调用请求。同一个应用程序就可以访问不同的数据库系统,存取多个数据库中的数据,从而提高了应用

13、程序的可移植性。与嵌入式SQL相比,ODBC一个最显著的优点是用它生成的应用程序与数据库或数据库引擎无关。16 数据库原理及应用电子科技大学2.ODBC2.ODBC体系结构体系结构ODBC技术为应用程序提供了一套CLI(Call-Level Interface,调用层接口)函数库和基于DLL(Dynamic Link Library,动态链接库)的运行支持环境。使用ODBC开发数据库应用程序时,在应用程序中调用标准的ODBC函数和SQL语句,通过可加载的驱动程序将逻辑结构映射到具体的DBMS或者应用系统所使用的系统中。ODBC是一个分层的体系结构,这样可保证其标准性和开放性,一个完整的ODBC

14、由下列几个部件组成:用宿主语言和ODBC函数编写的应用程序用于访问数据库。其主要任务是管理安装ODBC驱动程序和管理数据源应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。这样,应用程序就可以通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序驱动程序是实现ODBC函数和数据

15、源交互的DLL,提供了ODBC和数据库之间的接口。当应用程序调用SQL Connect或者SQL Driver Connect函数时,驱动程序管理器装入相应的驱动程序是驱动程序与DBMS连接的桥梁,数据源不是DBMS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。在连接中,用数据源名来代表用户名、服务器名、连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。创建数据源最简单的方法是使用Windows的ODBC驱动程序管理器17 数据库原理及应用电子科技大学7.2.2 JDBC7.2.2 JDBC技术技术JDBC(Java Data Base Connectivity,

16、Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问SQL Server数据库又编写另一个程序等。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其他数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。JDBC实际上做了3件事

17、:建立与数据库的连接建立与数据库的连接、发送发送SQLSQL、处理结果处理结果18 数据库原理及应用电子科技大学7.2.2 JDBC7.2.2 JDBC技术技术【例例7-17-1】 给定数据库URL、用户名和密码,通过Driver Manager建立数据库连接,创建Statement对象,该对象用于执行静态 SQL 语句并返回它所生成结果,对得到的结果集进行遍历并打印结果。/ 建立连接Connection con = DriverManager.getConnection( jdbc:odbc:wombat,login,password );/ 发送SQLStatement stmt = co

18、n.createStatement();ResultSet rs = stmt.executeQuery( SELECT DeptNo,DeptName,Manager FROM Dept );/ 结果处理While ( rs.next() String deptNo = rs. getString (DeptNo);String deptName = rs.getString(DeptName);String manager = rs. getString (Manager);System.out.println(deptNo+deptName+manager);19 数据库原理及应用电子科

19、技大学7.2.3 SQL7.2.3 SQL与宿主语言与宿主语言SQL语言可以独立使用,称为交互式(Interactive SQL,ISQL)。但ISQL的功能仅限于数据库上操作,缺少数据处理能力。而一个应用程序既要访问数据,又要处理数据,把SQL嵌入到程序设计语言,如C,C+,Java等,即宿主语言中,将两者的功能相结合起来,是目前解决这个问题的实现途径。这样使用的SQL称为嵌入式SQL(Embedded SQL,ESQL)。 (1)ESQL (1)ESQL的处理过程的处理过程 (2) ESQL (2) ESQL与主语言之间的通信与主语言之间的通信 (4) ESQL (4) ESQL的使用技术

20、的使用技术 (3)ESQL (3)ESQL的使用规定的使用规定20 数据库原理及应用电子科技大学7.2.3 SQL7.2.3 SQL与宿主语言与宿主语言(1)ESQL(1)ESQL的处理过程的处理过程 嵌入式SQL是一个语句级接口,通过程序访问的数据库模式必须在编写程序时已知,以便构造SQL语句。例如,程序员必须知道数据表名称、列名称及它的域。对于嵌入式SQL,RDBMS一般采用预编译方法处理,即由RDBMS的预处理程序对源程序进行扫描,识别出ESQL语句,把它们转换成主语言调用语句,以使主语言编译程序能识别它们,然后由主语言的编译程序将纯的主语言编译成目标码。21 数据库原理及应用电子科技大

21、学7.2.3 SQL7.2.3 SQL与宿主语言与宿主语言(2)(2) ESQLESQL与主语言之间的通信与主语言之间的通信 将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制流程。这时程序中会含有两种不同的计算模型的语句,从而需要二者之间建立通信。数据库工作单元与源程序工作单元之间的通信主要包括:(1)向主语言传递SQL语句的执行状态信息,使主语言能够根据此信息控制程序流 程,主要用SQL通信区实现(2)主语言向SQL语句提供参数,主要用主变量实现(3)将SQL语句查询数据库的结果交给主语言处理,主要用主变量和游标实现22 数据库原理及应用电子科技大学7.2.3

22、 SQL7.2.3 SQL与宿主语言与宿主语言( (3 3) ) ESQLESQL的使用规定的使用规定 为了区分SQL语句和宿主语言语句,ESQL语句有以下使用规定: 1 1. .在程序中要区分在程序中要区分SQLSQL语句和宿主语言语句语句和宿主语言语句在ESQL中,为了能够区分SQL语句与宿主语言语句,所有的SQL语句都必须加前缀标识“EXEC SQL”,并以“END_EXEC”作为语句的结束标志。嵌入式SQL语句的格式如:EXEC SQL END_EXEC结束标志在不同的宿主语言中可能是不同的,在C和PASCAL语言程序中规定结束标志为“;”,而不是“END_EXEC”。23 数据库原理

23、及应用电子科技大学7.2.3 SQL7.2.3 SQL与宿主语言与宿主语言( (3 3) ) ESQLESQL的使用规定的使用规定 为了区分SQL语句和宿主语言语句,ESQL语句有以下使用规定:2 2. SQL. SQL的集合处理方式与宿主语言单记录处理方式之间的协调的集合处理方式与宿主语言单记录处理方式之间的协调由于SQL语句处理的是记录集合,而宿主语言语句一次只能处理一条记录,因此需要使用游标(Cursor)机制,把集合操作转换为单记录处理方式。与游标有关的SQL语句如下:1)游标定义语句(DECLARE)。游标是与某一查询结果相联系的符号名,游标用SQL的DECLARE语句定义,其格式如

24、下:EXEC SQL DECLARE CURSOR FOREND EXEC游标定义语句是一个说明语句,定义中的SELECT并不立即执行。24 数据库原理及应用电子科技大学7.2.3 SQL7.2.3 SQL与宿主语言与宿主语言( (3 3) ) ESQLESQL的使用规定的使用规定 为了区分SQL语句和宿主语言语句,ESQL语句有以下使用规定:2 2. SQL. SQL的集合处理方式与宿主语言单记录处理方式之间的协调的集合处理方式与宿主语言单记录处理方式之间的协调由于SQL语句处理的是记录集合,而宿主语言语句一次只能处理一条记录,因此需要使用游标(Cursor)机制,把集合操作转换为单记录处理

25、方式。与游标有关的SQL语句如下:2)游标打开语句(OPEN)。该语句在执行游标定义中的SELECT语句,同时游标处于活动状态。游标是一个指针,此时指向查询结果的第一行之前。OPEN语句的格式如下:EXEC SQL OPEN END_EXEC25 数据库原理及应用电子科技大学7.2.3 SQL7.2.3 SQL与宿主语言与宿主语言( (3 3) ) ESQLESQL的使用规定的使用规定 为了区分SQL语句和宿主语言语句,ESQL语句有以下使用规定:2 2. SQL. SQL的集合处理方式与宿主语言单记录处理方式之间的协调的集合处理方式与宿主语言单记录处理方式之间的协调由于SQL语句处理的是记录

26、集合,而宿主语言语句一次只能处理一条记录,因此需要使用游标(Cursor)机制,把集合操作转换为单记录处理方式。与游标有关的SQL语句如下:3)游标推进语句(FETCH)。此时游标推进一行,并把游标指向的行(即当前行)中的值取出并送到共享变量,其格式如下:EXEC SQL FETCH FROM INTO END_EXEC变量表由逗号分开的共享变量组成。FETCH语句通常置于宿主语言程序的循环结构中,并借助宿主语言的处理语句逐一处理查询结果中的每一个元组。26 数据库原理及应用电子科技大学7.3 WEB7.3 WEB数据库系统技术数据库系统技术 Web数据库管理系统是指基于Web模式的DBMS的

27、信息服务,充分发挥DBMS高效的数据存储和管理能力,以Web这种浏览器/服务器(B/S)模式为平台,将客户端融入统一的Web浏览器,为Internet用户提供使用简便、内容丰富的服务。Web数据库管理系统必将成为Internet和Intranet提供的核心服务,为Internet上的电子商务提供技术支持。WebWeb数据库处理环境数据库处理环境27 数据库原理及应用电子科技大学7.3.1 ASP.NET7.3.1 ASP.NET技术技术 ASP.NET是微软公司的.NET FrameWork的一部分。它是一个开发框架,用于通过 HTML、CSS、JavaScript 以及服务器脚本来构建网页和

28、网站。与直接由Web服务器提供的静态HTML不同的是,ASP.NET页面实际上是在服务器上执行以后再产生结果的。ASP.NETASP.NET的体系结构的体系结构28 数据库原理及应用电子科技大学7.3.1 ASP.NET7.3.1 ASP.NET技术技术 所有 Web 客户端都通过 Internet 信息服务(IIS) 与 ASP.NET 应用程序进行通讯。IIS 解释请求并且有选择地对请求进行身份验证。如果将“允许匿名”设置为 true,则不会进行身份验证。IIS 也会查找所请求的资源(如 ASP.NET 应用程序),如果客户端得到了授权,则会返回相应的资源。ASP.NETASP.NET的体

29、系结构的体系结构29 数据库原理及应用电子科技大学7.3.1 ASP.NET7.3.1 ASP.NET技术技术ASP.NET是ASP和.NET相结合的产物,它与.NET框架紧密集成,可以利用.NET提供的新功能来创建动态Web页面,其中包含了许多新的特性:(1 1)代码编译执行)代码编译执行(2 2)灵活性)灵活性(3 3)简易性)简易性(4 4)可管理性)可管理性(5 5)安全性)安全性影响ASP性能的一个重要的原因就是它是基于脚本(VBScript 或 JavaScript)的。脚本语言有两大缺陷:它们是解释型的并且分类不严格,从而导致执行速度慢、效率低。与解释语言不同,ASP.NET可利

30、用早期绑定、实时编译、本机优化等服务,即便代码是脚本语言,它也会在执行前被编译,因此Javascript代码页面的性能也会得到提高。由于ASP.NET基于公共语言运行库,因此Web应用程序开发人员可以利用整个平台的威力和灵活性。.NET框架类库、消息处理和数据访问解决方案都可以从Web中无缝访问。此外,开发ASP.NET也与语言无关,所以可以选择最适合应用程序的语言,或跨多种语言来分割应用程序进行开发。在集成的.NET框架中,ASP.NET可以非常方便地开发Web应用程序和XML Web服务,同时站点的配置、发布也非常方便。对于简单的ASP应用程序,配置其实并不复杂,但是当程序移植到一个利用组

31、件的N层机构中时就会遇到问题。当对这些应用程序进行配置和维护时,DLL陷阱问题就会出现。ASP.NET中取消了组件注册以及DLL锁定,全面使用了XML配置文件,从而解决了这个问题。作为.NET框架的一部分,ASP.NET提供了很多高级安全功能,包括实现身份验证和授权解决方案的机制、对角色和身份标识的支持,可以实现自定义身份验证和授权的架构,与微软的.NET Passport集成,确保代码访问安全。30 数据库原理及应用电子科技大学7.3.2 JSP7.3.2 JSP技术技术 JSP(JavaServer Pages)是在普通HTML中嵌入了Java程序片段(Scriptlet)和JSP标签的一

32、个脚本。JSP网页Java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。31 数据库原理及应用电子科技大学7.3.2 JSP7.3.2 JSP技术技术 1.JSP1.JSP的工作原理的工作原理32 数据库原理及应用电子科技大学7.3.2 JSP7.3.2 JSP技术技术3.JSP3.JSP的内置对象的内置对象(1)Request对象(2)Response对象(3)Session对象(4)Aplica

33、tion对象(5)Out对象(6)Cookie对象该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。Response对象对客户的请求做出动态的响应,向客户端发送数据。Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。服务器启动后就产生了Application对象,当客户再所访问的网站的各个页面之间浏览时,这个Application对象都是同一个,直到服务器关闭。但是与Session不同的是,所有客户的Application对象都是同一个,即所有客户共享这个内置的Application对象。Out

34、对象是一个输出流,用来向客户端输出数据。Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。Cookie是以“关键字key=值value“的格式来保存纪录的。33 数据库原理及应用电子科技大学7.3.2 JSP7.3.2 JSP技术技术 4.JSP4.JSP的简单例子的简单例子【例7-3】通过new Date() 显示当前日期和时间,创建JSP文件,其内容如下:保存为example.jsp,并发布于Tomcat服务器,该JSP文件将被编译成Servlet。First PageHello, today is: 例7-3在To

35、mcat服务器上运行的结果34 数据库原理及应用电子科技大学7.3.2 JSP7.3.2 JSP技术技术 5.JSP5.JSP通过通过JDBCJDBC连接数据库连接数据库(1)获取数据库连接(2)执行SQL语句(3 3)处理执行结果)处理执行结果 (4 4)释放连接)释放连接用DriverManager获取数据库连接,如SQL Server数据库的连接:/ SQL Server 的JDBC驱动程序名称String driverName = com.microsoft.sqlserver.jdbc.SQLServerDriver; /名为Teaching数据库的SQL Server连接字符串St

36、ring url = jdbc:sqlserver:/localhost:1433; DatabaseName=Teaching; String userName = sa; /用户名String userPwd = sa; /密码Class.forName(driverName);Connection conn= DriverManager.getConnection(url, userName, userPwd);可以采用Statement或PreparedStatement来执行SQL语句,如:String sql;Statement stmt = conn.createStatemen

37、t();ResultSet rs = stmt.executeQuery(sql); / 执行数据查询语句(select)stmt.executeUpdate(sql); / 执行数据更新语句(delete、update、insert、drop等)stmt.close(); 遍历访问结果集的形式如:while (rs.next() System.out.println(第一个字段值为: + rs.getString(1);System.out.println(姓名为: + rs.getString(“姓名”);一般地,先关闭ResultSet,然后关闭Statement(或者PreparedS

38、tatement),最后关闭Connection。连接关闭如下:rs.close(); /关闭ResultSetstmt.close(); /关闭Statementconn.close(); /关闭Connection35 数据库原理及应用电子科技大学7.4 7.4 游标编程游标编程 DBMS通过游标(游标(CursorCursor)提供了一种从记录集中逐一访问记录的灵活手段。就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条取一条记录的机制。游标总是与一条SQLSQL选择语句(选择语

39、句(SelectSelect)相关联。)相关联。SQL ServerSQL Server支持三种类型的游标:支持三种类型的游标:Transact_SQLTransact_SQL游标,游标,APIAPI服务器游标和客服务器游标和客户游标。户游标。36 数据库原理及应用电子科技大学7.4 7.4 游标编程游标编程 (1 1)Transact_SQLTransact_SQL游标游标Transact_SQLTransact_SQL游标是由游标是由DECLARE CURSORDECLARE CURSOR语法定义,主要用在语法定义,主要用在Transact_SQL Transact_SQL 脚脚本、存储过

40、程和触发器中。本、存储过程和触发器中。Transact_SQL Transact_SQL 游标主要用在服务器上,由从客户端游标主要用在服务器上,由从客户端发送给服务器的发送给服务器的Transact_SQLTransact_SQL语句或是批处理、存储过程、触发器中的语句或是批处理、存储过程、触发器中的Transact_SQLTransact_SQL进行管理。进行管理。 Transact_SQL Transact_SQL 游标不支持提取数据块或多行数据。游标不支持提取数据块或多行数据。(2 2)APIAPI游标游标API服务器游标支持在OLE DB、ODBC 以及DB_library中使用游标函

41、数,主要用在服务器上。每一次客户端应用程序调用API 游标函数,SQL Server的OLE DB提供者、ODBC驱动器或DB_library的动态链接库(DLL)都会将这些客户请求传送给服务器以对API服务器游标进行处理。(3 3)客户游标)客户游标客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个默认的结果集被用来在客户机上缓存整个结果集。客户游标仅支持静态游标而非动态游标。由于服务器游标并不支持所有的Transact-SQL 语句或批处理,所以客户游标常常仅被用作服务器游标的辅助。因为在一般情况下,服务器游标能支持绝大多数的游标操作。37 数据库原理及应用电子科技大学7.

42、4.2 7.4.2 游标结构游标结构 定义一个游标的语法格式如下:定义一个游标的语法格式如下:DECLARE cursor_name INSENSITIVE SCROLL CURSOR FOR select_statement FOR READ ONLY | UPDATE OF column_name ,ncursor_name:游标的名字。:游标的名字。INSENSITIVE:将游标定义所选取出来的数据记录存放在一临时表内。对该游标的读取操作皆由临时表来:将游标定义所选取出来的数据记录存放在一临时表内。对该游标的读取操作皆由临时表来应答。因此,对基本表的修改并不影响游标提取的数据,即游标不会

43、随着基本表内容的改变而改变,同时也应答。因此,对基本表的修改并不影响游标提取的数据,即游标不会随着基本表内容的改变而改变,同时也无法通过游标来更新基本表。如果不使用该保留字,那么对基本表的更新、删除都会反映到游标中。无法通过游标来更新基本表。如果不使用该保留字,那么对基本表的更新、删除都会反映到游标中。 SCROLL:表明所有的提取操作(如:表明所有的提取操作(如FIRST、LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用该保留字,那么只能进行)都可用。如果不使用该保留字,那么只能进行NEXT 提取操作。由此可见,提取操作。由此可见,SCROLL

44、极大地增加了提取数极大地增加了提取数据的灵活性,可以随意读取结果集中的任一行数据记录,而不必关闭再重开游标。据的灵活性,可以随意读取结果集中的任一行数据记录,而不必关闭再重开游标。 select_statement:定义结果集的定义结果集的SELECT语句。应该注意的是,在游标中不能使用语句。应该注意的是,在游标中不能使用COMPUTE、COMPUTE BY、FOR BROWSE、INTO语句。语句。 READ ONLY:表明不允许游标内的数据被更新,尽管在默认状态下游标是允许更新的。而且在:表明不允许游标内的数据被更新,尽管在默认状态下游标是允许更新的。而且在UPDATE或或DELETE语句

45、的语句的WHERE CURRENT OF子句中,不允许对该游标进行引用。子句中,不允许对该游标进行引用。 UPDATE OF column_name,n:定义在游标中可被修改的列,如果不指出要更新的列,那么所有的列:定义在游标中可被修改的列,如果不指出要更新的列,那么所有的列都将被更新。当游标被成功创建后,游标名成为该游标的唯一标识,也是在以后的存储过程、触发器或都将被更新。当游标被成功创建后,游标名成为该游标的唯一标识,也是在以后的存储过程、触发器或Transact_SQL 脚本中使用的名字。脚本中使用的名字。38 数据库原理及应用电子科技大学7.4.3 7.4.3 游标编程游标编程 每一个

46、游标必须有每一个游标必须有4 4个组成部分,它们必须符合以下顺序:个组成部分,它们必须符合以下顺序:声明(声明(DECLAREDECLARE)游标)游标打开(打开(OPENOPEN)游标)游标从一个游标中逐条获取(从一个游标中逐条获取(FETCHFETCH)并处理记录信息)并处理记录信息关闭(关闭(CLOSECLOSE)或释放()或释放(DEALLOCATEDEALLOCATE)游标)游标游标是用于迭代访问SELECT语句查询出的结果集。声明游标就是确定游标的属性,制定游标的查询结果集。声明游标的语法格式已经在上一节进行了描述。打开游标语句执行游标定义中的查询语句,查询结果存放在游标缓冲区中,

47、并使游标指针指向游标区中的第一个元组,作为游标的默认访问位置。查询结果的内容取决于查询语句的设置和查询条件。打开游标的语法如下:OPEN 游标名称;读游标区数据语句是读取游标区中当前元组的值,并将各分量依次赋给指定的共享主变量。FETCH语句用于读取游标中的数据,语句格式为:FETCH NEXT|PRIOR|FIRST|LAST| ABSOLUTE n| RELATIVE n from 游标名INTO 局部变量, nNEXTNEXT:表示返回结果集中当前行的下一行记录,如果第一次读取则返回第一行。默认的读取选项为NEXT。PRIORPRIOR:表示返回结果集中当前行的前一行记录,如果第一次读取

48、则没有行返回,并且把游标置于第一行之前。FIRSTFIRST:表示返回结果集中的第一行,并且将其作为当前行。LASTLAST:表示返回结果集中的最后一行,并且将其作为当前行。ABSOLUTEABSOLUTE n:如果n为正数,则返回从游标头开始的第n行,并且返回行变成新的当前行;如果n为负,则返回从游标末尾开始的第n行,并且返回行为新的当前行;如果n为0,则返回当前行。RELATIVERELATIVE n:如果n为正数,则返回从当前行开始的第n行;如果n为负,则返回从当前行之前的第n行;如果为0,则返回当前行。INTOINTO:表示将游标当前字段值赋值给对应的局部变量。在处理完游标中数据之后必

49、须关闭游标来释放数据结果集和定位于数据记录上的锁。CLOSE 语句关闭游标,但不释放游标占用的数据结构。如果准备在随后的使用中再次打开游标,则应使用CLOSE 命令。关闭游标的语法规则为:CLOSE GLOBAL cursor_name | cursor_variable_name 游标可应用在存储过程、触发器和Transact_SQL 脚本中。如果在声明游标与释放游标之间使用了事务结构,则在结束事务时游标会自动关闭。39 数据库原理及应用电子科技大学7.4.2 7.4.2 游标结构游标结构 (5 5)释放游标)释放游标在使用游标时,各种针对游标的操作或者引用游标名,或者引用指向游标在使用游标

50、时,各种针对游标的操作或者引用游标名,或者引用指向游标的游标变量。当的游标变量。当CLOSE CLOSE 命令关闭游标时,并没有释放游标占用的数据结构。命令关闭游标时,并没有释放游标占用的数据结构。因此常使用因此常使用DEALLOCATE DEALLOCATE 命令。通过该命令可以删除掉游标与游标名或游标命令。通过该命令可以删除掉游标与游标名或游标变量之间的联系,并且释放游标占用的所有系统资源。其语法规则为:变量之间的联系,并且释放游标占用的所有系统资源。其语法规则为:DEALLOCATE GLOBAL cursor_name | cursor_variable_name当使用当使用DEALL

51、OCATE cursor_variable_name DEALLOCATE cursor_variable_name 来删除游标时,游标变量并不来删除游标时,游标变量并不会被释放,除非超过使用该游标的存储过程、触发器的范围(即游标的作用会被释放,除非超过使用该游标的存储过程、触发器的范围(即游标的作用域)。域)。40 数据库原理及应用电子科技大学7.5.1 7.5.1 存储过程的概念存储过程的概念 存储过程是一组已被编辑在一起的,存储在服务器上的,执行某种功能的预编存储过程是一组已被编辑在一起的,存储在服务器上的,执行某种功能的预编译译SQLSQL语句。它是一种封装重复任务操作方法,支持用户提

52、供的参数变量,具有语句。它是一种封装重复任务操作方法,支持用户提供的参数变量,具有强大的编程能力。强大的编程能力。存储过程非常类似于存储过程非常类似于DOSDOS系统中的批处理文件。它将完成某项任务的许多系统中的批处理文件。它将完成某项任务的许多SQLSQL语语句写在一起,组成命令集合的形式,然后通过执行该存储过程就可以完成相应的句写在一起,组成命令集合的形式,然后通过执行该存储过程就可以完成相应的任务。任务。存储过程具有许多优点:存储过程具有许多优点:(1 1)加快程序的执行速度)加快程序的执行速度 (2 2)减少网络的数据流量)减少网络的数据流量 (3 3)提供了一种安全机制)提供了一种安

53、全机制 (4 4)允许程序模块化设计)允许程序模块化设计 (5 5)提高编程的灵活性)提高编程的灵活性41 数据库原理及应用电子科技大学7.5.1 7.5.1 存储过程的概念存储过程的概念 在在SQL ServerSQL Server中,存储过程包括系统存储过程、本地存储过程、临时存储过程、中,存储过程包括系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。远程存储过程和扩展存储过程。(1 1)系统存储过程)系统存储过程 以以sp_sp_开头,用来进行系统的各项设定、取得信息和相关管理工作。开头,用来进行系统的各项设定、取得信息和相关管理工作。(2 2)本地存储过程)本地存储

54、过程 用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。上一般所说的存储过程就是指本地存储过程。(3 3)临时存储过程)临时存储过程 临时存储过程分为两种存储过程:一是本地临时存储过程,以井字号临时存储过程分为两种存储过程:一是本地临时存储过程,以井字号(#)(#)作为作为其名称的第一个字符,该存储过程将成为一个存放在其名称的第一个字符,该存储过程将成为一个存放在TEMPDBTEMPDB数据库中的本地临时存数据库中的本地临时存储过程,且只有创建它的用户才能执行它;二是全局临时存

55、储过程,以两个井字号储过程,且只有创建它的用户才能执行它;二是全局临时存储过程,以两个井字号(#)(#)开始,该存储过程将成为一个存储在开始,该存储过程将成为一个存储在TEMPDBTEMPDB数据库中的全局临时存储过程,全数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。要特定的权限。42 数据库原理及应用电子科技大学7.5.1 7.5.1 存储过程的概念存储过程的概念 在在SQL ServerSQL Server中,存储过程包括系统存储过程、本地存储过程、

56、临时存储过程、中,存储过程包括系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。远程存储过程和扩展存储过程。(4)远程存储过程 在SQL Server中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。(5 5)扩展存储过程)扩展存储过程 扩展存储过程(扩展存储过程(Extended Stored ProceduresExtended Stored Procedures)是用户可以使用外部程)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以序语

57、言编写的存储过程,而且扩展存储过程的名称通常以xp_xp_开头。开头。43 数据库原理及应用电子科技大学7.5.1 7.5.1 存储过程的概念存储过程的概念 在在SQL ServerSQL Server中,存储过程包括系统存储过程、本地存储过程、临时存储过程、中,存储过程包括系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。远程存储过程和扩展存储过程。(4)远程存储过程 在SQL Server中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。(5 5)扩展存储过程

58、)扩展存储过程 扩展存储过程(扩展存储过程(Extended Stored ProceduresExtended Stored Procedures)是用户可以使用外部程)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以序语言编写的存储过程,而且扩展存储过程的名称通常以xp_xp_开头。开头。44 数据库原理及应用电子科技大学7.5.2 7.5.2 存储过程结构存储过程结构 存储过程包括过程首部和过程体两部分,其创建语句的基本格式如下:存储过程包括过程首部和过程体两部分,其创建语句的基本格式如下:CREATE PROC EDURE procedure_name ; num

59、ber / /* * 存储过程首部存储过程首部*/ parameter data_type VARYING = default OUTPUT ,n WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION FOR REPLICATION AS SQL n / /* * 存储过程体,描述该存储过程的操作存储过程体,描述该存储过程的操作 */procedure_name:存储过程名称:存储过程名称 ;number :可选的整数,用来对同名的过程分组:可选的整数,用来对同名的过程分组parameterparameter:参数列表:参数列表RECOMPI

60、LE | ENCRYPTION | RECOMPILE, ENCRYPTION:RECOMPILERECOMPILE表明表明SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。不会缓存该过程的计划,该过程将在运行时重新编译。FOR REPLICATION:指定不能在订阅服务器上执行为复制创建的存储过程。:指定不能在订阅服务器上执行为复制创建的存储过程。45 数据库原理及应用电子科技大学7.5.2 7.5.2 存储过程结构存储过程结构 关于参数的使用说明如下:每个存储过程中最多设定1024个参数用名字来标识调用时给出的参数值,必须指定值的参数类型每个参数名前要有一个“”符号,每

温馨提示

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

评论

0/150

提交评论