330 likes | 464 Views
第 9 章 数据库应用程序开发. 主要内容. 游标的概念 游标的基本操作 应用程序访问数据库的过程 ODBC 数据源的配置 OLE DB 接口的体系结构 利用 ADO 控件连接数据库的方法 基于 SQL Server 2005 应用开发的基本流程. 9.1 游标的管理. 9.1.1 游标的简介及用途 1. 游标的概念
E N D
主要内容 游标的概念 游标的基本操作 应用程序访问数据库的过程 ODBC数据源的配置 OLE DB接口的体系结构 利用ADO控件连接数据库的方法 基于SQL Server 2005应用开发的基本流程
9.1游标的管理 9.1.1 游标的简介及用途 1.游标的概念 游标(Cursor)是一种处理数据的方法,为了查看或者处理结果集中的数据,游标提供了在结果集中向前或者向后浏览数据的能力。我们可以把游标看成一个在记录集中的指针,通过这个指针既可以指向当前位置,又可以指向结果集中的任意位置,并且允许用户对指定位置的数据进行处理,可以把结果集中的数据放在数组、应用程序或其他位置。
2.使用游标的优点 允许程序对由查询语句SELECT返回的记录集中的每一行数据执行相同或不同的操作,而不是对整个行集合执行同一个操作; 提供对基于游标位置的行进行删除和更新的能力; 游标实际上作为面向集合的数据库管理系统和面向行的程序设计之间的桥梁,使这两种处理方式通过游标联系起来。提供脚本、存储过程和触发器中使用的用于访问结果集中数据的T-SQL语句。
1.游标的声明:格式:DECLARE cursor_name[insensitive][SCROLL]CURSOR [local global] [static|keyset|dynamic] FOR select_statement [for{READ ONLY|UPDATE[OF column_name_list]}] 9.1.2游标的基本操作
2.游标的创建过程 1)打开Microsoft SQL Server Manager 管理器。单击常用工具栏中的按钮,新建一个数据库查询文档,如图9.1所示。 图 9. 1 新建查询
2)在数据库引擎查询文档中输入如下代码: Use xs Declare hy1 cursor for Select * from 学生 where 性别=’男’ 只读游标的创建: Use xs Declare hy2 cursor for Select * from 学生where 入学成绩>500 For read only 更新游标的创建: Use xs Declare hy3 cursor for Select * from 学生 where 班级=’计算机’ For update 正确输入后,按键盘上的“F5”键执行SQL语句,显示如下提 示信息: Command(s) completed successfully。 创建游标完毕。
3.游标的打开 格式:OPEN {[GLOBAL] cursor_name|@cursor_variable_name} 说明: Cursor_name:要打开的游标名。 @cursor_variable_name:游标变量名,该变量名是引用了的一个游标。 GLOBAL: 用来说明打开的是全局游标,省略时打开局部游标。 4.游标数据的读取 创建游标并打开游标以后,利用T-SQL可以读取游标中的数据,语法格式如下: Fetch[ next | prior | first | last ] [ absolute n | relative n ] From 游标名 [into 变量名]
5.关闭游标: 利用游标处理完数据之后,必须关闭游标,格式如下: Close 游标名称 6.释放游标 游标关闭以后并没有释放游标所占用的系统资源,因此关闭游标以后,必须释放游标才能释放游标所占的系统资源,格式如下: Deallocate 游标名称
9.2 客户端访问SQL SERVER的方式 数据库应用程序是通过SQL Server 2005应用程序接口向SQL Server服务器发送SQL语句,实现数据库的访问。因此,要想访问数据库,必须学习使用SQL Server应用程序接口。 SQL SERVER 2005采用了分层的通信体系结构,把应用程序与底层的网络协议分隔开,用户可以通过数据库对象或API应用程序接口访问数据库。 应用程序采用数据库应用程序接口(API)开发。 数据库接口:是应用程序给SQL SERVER发送请求和处理SQL SERVER返回结果的接口。
应用程序接口:数据库API定义一个应用程序如何连接到数应用程序接口:数据库API定义一个应用程序如何连接到数 • 据库,包括两类数据库API: • ODBC和OLE DB。 • ODBC:是一个标准的访问数据库的编程接口,支持使用 ODBC数据对象接口写的应用程序或者组件。 • OLE DB:是一个基于组件对象模型(COM)的数据库访 问接口,它支持使用OLE DB数据对象接口写的 应用程序。 • 数据库对象接口ADO(Active X Data Objects): 是一个在简化数据模型中封装的OLE DB API,使用ADO进行开发要比使用OLE DB开发的速度快,OLE DB是使用ADO的基础,ADO可以在VB,VC,ASP中使用。
9.2.1 ODBC接口 ODBC定义: ODBC是Open DatabaseConnectivity的英文简 写。它是一种用来在相关或不相关的DBMS中存取数 据的,用C语言实现的标准应用程序数据接口。通过 ODBC API,应用程序可以存取保存在多种不同DBMS 中的数据,而不论每个DBMS使用了何种数据存储格式 和编程接口。 在使用ODBC连接SQL Server2005数据库之前,必须在ODBC中配置SQL Server数据源。数据源存储了如何与指定数据库连接的信息,有三种类型:文件DSN、系统DSN、用户DSN。
在Windows2003的【控制面板】中的管理工具中选择【数据源(ODBC)】,如图9.7所示:在Windows2003的【控制面板】中的管理工具中选择【数据源(ODBC)】,如图9.7所示: 图 9.7创建数据源窗口
用户DSN:只能被当前登陆的用户管理和使用,只有创建者才能使用,只能在本地机器上运行。用户DSN:只能被当前登陆的用户管理和使用,只有创建者才能使用,只能在本地机器上运行。 系统DSN:对于同一计算机或服务器上的所有用户都可以使用。所有Windows下的应用程序都可以使用系统数据源。 文件DSN:是以文件形式储存的数据源配置,是ODBC3.0以上版本增加的一种数据源。配置数据源的过程如下:1.点击“用户DSN”或者“系统DSN”后,点击【添加】按钮,系统弹出如图9.8所示:
图 9.8 配置数据源 2.在驱动程序中选择“SQL Server”驱动程序, 点击完成按钮,弹出图9.9。
3.在名称中输入新数据源的名称,用来被应用程序使用。在描述中输入该数据源的说明文字。在服务器中选择需要连接的数据库服务器的名称。然后单击【下一步】按钮出现图9.10:图 9.10 配置数据源 图 9.10 配置数据源
4.单击客户端配置可以配置客户端连接服务器使用的通讯协议和端口。在登录ID和密码中输入登录数据库的用户名和密码。单击【下一步】进入图9.11所示画面:4.单击客户端配置可以配置客户端连接服务器使用的通讯协议和端口。在登录ID和密码中输入登录数据库的用户名和密码。单击【下一步】进入图9.11所示画面: 图 9.11 配置数据源
5.更改默认数据库为当前数据库连接要访问的数据库单击【下一步】弹出图9.12:5.更改默认数据库为当前数据库连接要访问的数据库单击【下一步】弹出图9.12: 6.单击测试数据源按钮,可以看到新数据源与数据库连接是否正确。 图 9‑12 测试数据源
9.2.2 OLE DB接口 微软定义了OLE DB用户的4个主要层次: 数据提供者:使用OLE DB SDK(软件开发工具)创建OLE DB提供者的人。提供者用户与数据库和事件交互作用,发信号通知特殊事件的发生。 数据消费者:访问数据库中信息的应用程序、系统驱动程序或者用户。 数据服务提供者:创建用以增强用户或者数据库管理员使用管理数据库能力的独立应用程序的开发者 部件开发者:创建应用程序部件或模块,以减少创建数据库应用程序所需的编码工作。如VB6.0提供的ADO组件。 一般来说,数据库应用程序即OLE DB消费者是通过OLE DB用户界面和OLE DB 提供者(Provider)来访问数据源,他们之间的关系如图9.13所示。
应用程序(OLEDB)消费者 OLE DB界面(例如ADO 等) OLE DB提供者 数据源 图 9.13 OLE DB消费者和 使用者之间的关系
数据库应用程序 ADO组件 ODBC的OLE DB提供者 SQL SERVER 的OLE DB提 供 者 Excel的OLE DB提供者 其他的OLE DB提供者 ODBC驱动程序 EXCEL 电子表格数据 其他数据源 SQL SERVER ODBC 数据源 对于不同的OLE DB提供者,OLE DB 提供不同级别的功能,但是他们都支持一个通用的用户界面。不同的OLE DB数据源使用自己的数据源,他们之间的关系如图9.14所示。 图 9‑14 应用程序通过ADO 调用OLE DB的模型
9.2.3 ADO组件 Active数据对象(ActiveDataObjects):ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE DB之上的技术,因此ADO 通过其内部的属性和方法提供统一的数据访问接口方法。 ADO可以编写OLE DB提供者对数据库中数据访问和操作的应用程序。其特点是易于使用、性能好、占用内存小。 在ADO对象模型中,主要包括Connection、recordset、Command三个对象。其功能如下:
Connection:是ADO对象连接数据库的第一步,通过 Connection与sql server 2005数据库建立连接。 • Command:通过Connection与 数据库建立连接后, Command对象承担数据库查询的任务,查询请求通过 sql语句来描述。首先指定Command 对象的 CommandString属性为sql语句字符串,然后执行数据库 查询动作,查询以后,将结果存储在recordset对象中。 • Recordset:在执行数据库查询后,结果保存在recordset 对象中,然后利用程序设计语言来处理recordset对象中 的记录。 • 在使用recordset对象的open 方法时,可通过Cursortype 设置打开Recordset时应该使用的游标类型,其类型如下: • 仅向前游标(adOpenForward) 为默认游标类型,记录集为只读,只能在记录中向前移动。
静态游标(AdOpenStatic)记录集为只读,允许记录集向前,向后移动,但其他用户所做的添加、更改不可见。静态游标(AdOpenStatic)记录集为只读,允许记录集向前,向后移动,但其他用户所做的添加、更改不可见。 • 键集游标(AdOpenKeyset)记录集为读写,允许记录集各种类型的移动,但无法看到其他用户对数据的更改。 • 动态游标(AdOpenDynamic)记录集为读写,可用于查看对数据表所做的添加、更改和删除。 • 1.使用ADO的简单流程: • 连接数据库。 • 指定访问数据库的查询命令。 • 执行命令。 • 如果这个命令使数据按表中的形式返回,则将这些行存储在易于检查、操作或者更改的缓存中。
可以使用缓存行的更改内容更改数据表。 • 提供常规方法检测错误。 • 关闭数据库连接。 2.利用ADO对象访问数据库的过程 • VB6.0提供了ActiveX数据对象,在程序中使用ADO对象之前,首先在声明工程中引用对象库Microsoft AxtiveX Data Object Library,否则会出现类型为定义的编译错误。因为ADO对象 connection,recordset 包含在对象库中,添加步骤如下: • 1)启动Visual Basic集成开发环境,然后选择工程菜单下的【引用】命令,打开引用对话框。 • 图 9.15 引用数据对象 • 2)在列表中,单击Microsoft AxtiveX Data Object 2.6 Library项目左侧的复选框如图9.15所示。单击【确定】。
3) 利用connection对象和数据库建立连接,其方法如下: 首先声明connection对象,既可以先定义一个connection 类型的对象变量,然后建立该对象的实例,如: Dim cn AS NEW ADODB.Connection Set cn=NEW ADODB.Connection 又可以在声明的同时创建该对象的实例如: DIM cn AS NEW AODDB.Connection 4) 然后应用connectiosn对象的open方法与数据库建立连接,语法如下: Cn.open ConnectionString,userid,password 参数说明: connectionString:是一个OLE DB连接字符串。 Userid:建立数据库连接的用户名。 Password:建立连接的用户名对应的密码。
3.通过Connection对象的open方法与SQL SERVER2005连接有如下两种: 1)通过ODBC数据源建立连接。 2)通过OLE DB 连接字符串连接。 4.通过Connection对象的execute方法对数据库 操作 在建立数据库连接以后,可以通过Connection对象的execute方法执行在数据库中的记录的查询、修改等操作,操作的返回值是一个记录集。具体方法如下: Set rs=cn.execute(sql_str) 其中参数sql_str是一个字符串,给出要执行的数据库的sql语句或者存储过程等。
5.通过Connection对象的close方法关闭数据库连接5.通过Connection对象的close方法关闭数据库连接 在一次数据库操作结束之后,应该使用Connection对象的close方法关闭数据库的连接,并将这个对象变量从内存中释放。具体方法如下: Cn.close Cn=nothing
9.3 管理系统开发实例 通过前面介绍的数据库基础知识以及使用方法,下面我们来学习如何用VISUAL BASIC实现基于SQL Server 2005数据库开发。本节以一个完整的实例来进行讲解。 9.3.1 需求分析 随着学校的规模扩大,学生数量不断增加,因此学生的信息量也不断增加,因此开发一个学生信息管理系统是十分必要的,其目的在于通过学生信息管理系统的管理功能来提高对学生管理的工作效率,实现信息的规范管理、科学统计和快速查询,从而减少工作人员的工作量。
9.3.2 系统设计 在本案例中系统主要功能提供了对学生信息的管理、成绩的管理以及毕业的管理。 其功能具体如下: 学生信息的输入、修改和查询 学生成绩的输入、修改和查询 学生的退学留级、毕业处理等 9.3.3 系统功能模块设计 对上述各功能进行整理,按照结构化程序设计的要求,绘制如图9.17所示的系统功能图。学生信息管理系统学生信息管理学生成绩管理学
学生信息管理系统 学生信息管理 学生成绩管理 学 生毕业管理 学生信息录入 学生信息查询 学生信息浏览 学生信息修改 学生成绩录入 学生成绩查询 学生成绩浏览 退学留级处理 学生毕业处理 打印毕业信息 图 9.17 系统功能结构图关系