17xie > SQL Server 2000系统管理与开发指南 > 第二十一章 使用OLE DB和ADO开发数据库应用程序
背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-8590.html    注册17xie 一起来写书 实现您的出书梦想!

第二十一章  OLE DBADO开发数据库应用程序

在本章的第一部分中,将简要介绍OLE DB,包括OLE DB的体系结构以及OLE DBADO之间的关系。第二部分将说明基本的ADO数据库编程技术,以及如何用这种技术创建SQL Server数据库应用程序。

本章主要介绍下列内容:

n         OLE DBADO的概念

n         OLE DB的体系结构

n         OLE DBADO之间的关系

n         基本的ADO数据库编程技术

n         OLE DBADO创建SQL Server数据库应用程序

21.1  OLE DB的概念

OLE DB是由Microsoft最新开发的数据访问编程界面。Microsoft已经把OLE DB定位成ODBC API的继承者。由于ODBC的广泛应用,用OLE DB替代ODBC还有许多事情要做。ODBC API已被广泛接受,除了为数千种定制的数据库应用程序提供数据库支持外,大多数桌面应用程序,例如Microsoft office,都支持ODBC APIODBC驱动程序存在于所有主要的数据库系统中。然而,ODBC主要用于处理关系型数据库。ODBC是基于SQL的,它可以很好地用于关系型数据库访问,但不能用于非关系型数据源。与ODBC一样,OLE DB也提供了对关系型数据的访问,而且还扩展了由ODBC提供的功能。

OLE DB的设计目标是用于所有数据类型的标准界面。除了对关系型数据的访问外,OLE DB还提供了对各种数据源的访问,包括像Excel电子表格数据、像dBaseISAM文件、电子邮件、新的NTActive DirectoryIBMDB2数据。通过OLE DB,用一个界面就可以访问许多不同的数据源。

正如其名称所示,OLE DB是在OLE基础上创建的。ODBC提供了一种DLL调层界面,而ADOOLE DB提供了COM界面,允许从其他与OLE兼容的应用程序调用。OLEMicrosft的数据访问策略,是万能数据访问的基础。万能数据访问是一组通用界面,它用来表示任何数据源中的数据。OLE DB技术使万能数据访问成为现实。万能数据访问和OLE DB的另一端上所有的对象都应在数据库中维护。OLE DB并不是把商务需要的不同数据移动到一个面向对象的数据库中,而是创建并理解商务数据,并在各个数据源中维护。OLE DB提供了用于各种数据的类似界面。OLE DB可以用来访问任何可以用基本的行和列格式表示的数据。

21.2  OLE DB的体系结构

使用OLE DB的应用程序一般分为OLE DB提供者或者OLE DB使用者。OLE DB使用者是用OLE DB界面写成的应用程序。相比较而言,OLE DB提供者负责访问数据源,并且通过OLE DB界面向OLE使用者提供数据。一般有两种OLE DB提供者:数据提供者和服务提供者。数据提供者只是从数据源中提取数据,而服务提供者则传输和处理数据。服务提供者一般提供比较高级的函数,来扩展OLE DB数据提供者的基本数据访问功能。例如,Microsoft Query是一个OLE DB服务提供者,而SQL ServerMicrosoft OLE DB提供者是一个OLE DB数据提供者的样例。

OLE DB根据各种OLE DB提供者的功能,提供了不同等级的功能模块。全新OLE DB驱动程序支持一个通用界面,每一个驱动程序都可以扩展OLE DB功能。与ODBC非常类似,每一个不同的OLE DB数据源都使用自己的OLE DB提供者。例如,可以使用MicrosoftSQL Server OLE DB提供者访问SQL Server数据库,也可以用它们各自的OLE DB提供者访问包含在Microsoft Excel或者Exchange中的数据。为了最大限度地兼容已有的ODBC源,Microsoft开发了ODBCOLE DB提供者MSDASQL。大多数的OLE DB提供者提供了直接的数据库访问,而MSDASQL OLE DB provider for ODBC可使用已有的ODBC驱动程序访问数据。MSDASQL OLE DB provider for ODBCOLE DB调用映射为与之等价的ODBC调用。由这个OLE DB provider for ODBC提供的功能依赖于基本的ODBC驱动程序。

每一个OLE DB提供者通过其COM传送数据,并显示其功能。然而,OLE DBCOM界面是一种行级界面,要求支持指针、数据结构和直接内存分配。因此,直接使用OLE DB提供者适合于不支持行级指针的开发环境,例如Visual BasicVBAVBScriptJavaJava Script和其他几种语言。但它适合于ADOADO允许通过交互式操作方式和脚本语言访问OLE DB提供者,这些脚本语言支持数据访问,但是不支持行级内存的访问和操纵。

21.3  ADOActiveX Data Objects

ADO是一个OLE DB使用者,它提供了对OLE DB数据源的应用程序级访问。ADO是一个OLE Automation服务器,大多数与OLE兼容的开发和脚本环境都可以访问它。可以从下面的Microsoft Web站点下载ADO

http://www.microsoft.com/data/ado/download/htm.

ADO还可作为许多不同的Microsoft开发产品的标准组成部分提供,这些产品包括:

n         Visual Studio Enterprise Edition 56

n         Visual Basic Enterprise Edition 456

n         SQL Server 7SQL Server2000

为了访问SQL Server数据,OLE DB提供了两种不同的方法:OLE DB for SQL Server providerOLE DB provider for ODBCADO可以使用这两个OLE DB提供者。另外,ADO可通过多层体系结构来使用ADO对象框架。

Visual Basic应用程序可创建和使用各种ADO对象,而ADO对象框架调用相应的OLE DB提供者。如果ADO应用程序正在使用OLE DB provider for ODBC,就将使用MSDASQL OLE DB provider。当使用OLE DB provider for ODBC时,ADO将加载文件msdas.dll,该文件再加载ODBC Driver ManagerOLE DB provider for ODBCADO产生的OLE DB呼叫映射为ODBC呼叫,然后将ODBC呼叫传送给ODBC Driver Manager

ODBC Driver Manager负责加载相应的ODBC驱动程序。ODBC驱动程序一般使用网络进程通信(IPC)方法,例如Named PipesTCP/IP Sockets或者SPX,与访问目标数据源的远程IPC服务器通信。本地的OLE DB provider for SQL Server不使用任何附加的中间层。当使用OLE DB provider for SQL Server时,ADO加载spldedb.dll文件,该文件直接使用与库通信的相应的网络IPC方法。IPC客户机组件通过正在使用的网络协议创建与相应的服务器IPC数据流的连接,常用的网络协议包括Net BEUITCP/IPIPX。在这个层次结构的底部是物理网络拓扑结构。物理网络包括适配器卡和用于连接联网系统的缆线。EthernetToken Ring是两种最常用的网络拓扑结构。

21.4  OLE DBADO文件

21-1列出了用于实现ADO的客户机文件。

21-1  实现ADO的客户机文件

 

 

msdasp.dll

OLE DB provider for ODBC

sploledb.all

OLE DB provider for SQL Server

msadol5.dll

ADO Object Library

21.5  ADO的体系结构

与其他几个数据访问对象模型一样,ADO也是用层次对象框架实现的。然而,ADO对象模型比Data Access ObjectsDAO)或者Remote DAtabase ObjectsRDO)框架更简单。

ADO对象模型中,ConnectionRecordsetCommand对象是3个主要的对象。Connection对象表示对远程数据源的连接,除了创建对数据源的连接之外,Connection对象还可以用来控制事务范围。Connection对象与Recordset对象或者Command对象关联。

Recordset对象表示从数据源返回的结果集。ADO Recordset对象既可以使用一个打开的Connection对象,也可以创建对目标数据源的连接。Recordset对象允许查询和修改数据。

Command对象可用来执行命令和带参数的SQL语句,Command对象可以用于SQL语句和返回结果集的SQL查询。与ADO Recordset一样,Command对象既可以使用一个活动的Connection对象,也可以创建对目标数据源的连接。Command对象包含一个Parameters集合,这个集合中的每一个Parameter对象表示Command对象使用的一个参数。当Command对象执行一个带参数的SQL语句时,每一个Parameter对象表示SQL语句中的一个参数。

Connection对象的下面是Errors集合。在Errors集合中,每一个Error对象包含了一个错误信息,该错误是由ADO对象框架中的一个对象产生的。

除了上面介绍的主要对象之外,ConnectionCommandRecordsetField对象都是有一个Properties集合,它由一组Property对象组成。每一个Property对象都可以用于获取或者设置与对象相关的各种属性。

用户在刚开始看到的ADO对象框架时,会觉得其层次结构与DAORDO相同,其实不然。所有的ADO对象(除了ErrorsFieldsProperties对象外)都可以创建在自己身上,不需要访问更高一层的对象,这使ADO对象框架非常简单,并且比其他对象模型更灵活。例如,ADO对象框架允许打开一个Recordset对象,而不必先建立一个Connection对象实例。直接使用每一个对象而不必首先调用更高层的对象的能力,使ADO比其他对象框架更容易使用。然而,ADO并非总是像使用其他框架一样简单明了。

ADO是作为一个OLE Automation服务器创建的,这就便于从Visual Basic中访问ADO函数。在使用ODBC或者其他基于LLAPI时,必须在.bas或者cls模块中手工声明函数和参数,而使用ADO时,只需在项目中增加ADO参考,这些将在下一节解释。当在Visual Basic开发环境中增加ADO参考之后,就可以使用所有的ADO对象。在Visual Basic中使用ADO所需的步骤如下:

1)在Visual BasicMicrosoft ADO 2.1对象库中,制作一个参考。

2)用ConnectionCommand或者Recordset对象打开一个连接。

3)用Command或者Recordset对象访问数据。

4)关闭到ConnectionCommand或者Recordset对象的连接。

21.6  ADO 2参数增加到Visual Basic

Visual Basic中使用ADO之前,必须设置对ADO类型库(也称为ADO Automation服务器)的参考,以提供支持ADO 2.1的基本文件。当第一次从Microsoft Web站点下载ADO支持文件时,或者当安装了前面列出的某个包含ADO的产品时,会将ADO自动安装在系统上。然而,在Visual Basic项目中使用ADO之前,需要在Visual Basic的开发环境中设置对ADO OLE类型库的参考。

为了在Vissual Basic 56中增加对ADO Objects 2.1 Library的参考,启动Visual Basic,然后选择Projects References,则显示References对话框。

References对话框中,滚动Available References列表,直到看到Microsoft ActiveX Data Objects 2.1 Library选项为止。单击这个复选框,然后单击OK按钮,就将ADO Objects Library增加到Visual BasicIDE中,但这个操作并不会在Visual BasicToolbox中创建任何可视的对象。

为了看到ADO对象的属性和方法,需要使用Visual BasicObject browser

21.7  Visual Basic使用ADO对象

Visual Basic开发环境中增加了对ADO2.1 Library的参考之后,就可以用ADO创建Visual Basic应用程序。与DAO或者RDO对象模型不同,ADO在创建对数据源的连接之前不必创建顶层对象。使用ADO时,应用程序执行的第一步操作是使用ConnectionCommand或者Recordset对象打开一个连接。

21.7.1  连接到SQL Server

通过使用MSDASQL OLE DB provider for ODBC或者OLE DB provider for SQL ServerADO可以连接到SQL ServerMSDASQL provider允许ADO对象框架使用已有的ODBC驱动程序,而OLE DB provider可直接连接到SQL Server。这两个OLE DB provider都可以用于ADO ConnectionCommandRecordset对象。在下一节中,将研究如何使用OLE DB provider for ODBCOLE DB provider for SQL Server创建一个到SQL Server的连接、如何使用ADO Connection对象以及如何直接通过ADO Resultset对象连接到SQL Server上。

1.使用OLE DB provider for ODBC打开一个连接

如果熟悉DAO或者RDO对象框架,在开始创建应用程序时,最好使用ADO Connection对象和OLE DB provider for ODBC创建一个对SQL Server系统的连接。与DAORDO一样,MSDASQL OLE DB provider for ODBC用一个ODBC驱动程序和一个在ODBC Administrator中用于SQL ServerData Source Name(DSN),或必须使用一个无DSN的连接字符串。

程序清单21-1说明如何使用ADO Connection对象和MSDASQL provider提示用户选择一个将用于连接SQL ServerDSN

程序清单21-1:使用ADO Connection对象

Dim cn As New ADODB.Connection

'DSN Connection using the OLE DB provider for ODBC-MSDASQL

cn.ConnectionString="DSN="&_

";database=OYBSLyud="& sLonginID_

";PWD="& sPassword

'prompt the user to select the DSN

cn.Properties("Prompt")=adPromptComplete

cn.Open

cn.Closes

在这个代码示例的开头,创建了一个ADO Connection对象的实例cn.。由于ADO对象不依赖上层对象,所以每一个对象必须有一个带有Visual BasicNew关键字的Dim语句。接下来,给Connection对象cnConnectionString属性赋予一个ODBC连接字符串。与通常的ODBC连接字符串一样,这个用在ADOConnectionString属性中的连接字符串必须包含一组预定义的关键字,其中每一个关键字和与其相关的值用分号隔开。因为ADO是基于OLE DB,而不是ODBC,所以连接字符串中使用的关键字与标准的ODBC连接字符串中使用的


字数:7428    最后更新:11个月以前 [12-01 14:00]徐振成 修改
本页编辑者:徐振成  
[前一页]:20.2.5客户机配  [后一页]:关键字有所不同。表2
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号