ADO对象编程.docx

上传人:b****8 文档编号:10774098 上传时间:2023-02-22 格式:DOCX 页数:33 大小:50.69KB
下载 相关 举报
ADO对象编程.docx_第1页
第1页 / 共33页
ADO对象编程.docx_第2页
第2页 / 共33页
ADO对象编程.docx_第3页
第3页 / 共33页
ADO对象编程.docx_第4页
第4页 / 共33页
ADO对象编程.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

ADO对象编程.docx

《ADO对象编程.docx》由会员分享,可在线阅读,更多相关《ADO对象编程.docx(33页珍藏版)》请在冰豆网上搜索。

ADO对象编程.docx

ADO对象编程

补充1:

ADO对象编程

1.1ADO基础

1.1.1ADO的介绍

ADO是ActiveXDataObject的缩写,它是Microsoft数据库应用程序开发的新接口,是Microsoft新的数据访问技术,是建立在OLEDB之上的高层数据库访问技术。

ADO被设计用来同新的数据访问层OLEDBProvider一起协同工作,以提供通用数据访问(UniversalDataAccess)。

OLEDB是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库,以及电子邮件系统及自定义的商业对象

即使对OLEDB不了解也能轻松使用ADO,因为它非常简单易用,并不失灵活性。

ADO向VB程序员提供了很多好处,包括易于使用、熟悉的界面,高速度以及较低的内存占用。

同传统的数据对象层次(DAO和RDO)不同,ADO可以独立建立。

因此可以只创建一个“Connection”对象,但是可以有多个,独立的“Recordset”对象来使用它,另外ADO针对客户/服务器以及Web应用程序作了优化。

ADO最基本的操作流程:

初始化COM库,引入ADO库定义文件;用Connection对象连接数据库;利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理;使用完毕后关闭连接释放对象。

1.1.2AD0的对象

1.数据库连接对象——Connection

这是ADO的最大特点。

每一次引用数据库可以建立一个连接对象,然后在其之上建立多个RecordSet对象,方便远程连接的操作。

建立一个Connection的方法很简单,下面例子主要介绍了Connection对象的创建、连接数据库以及关闭连接的方法:

SubConnectionExample()

DimcnnasADODB.connection

Setcnn=newADODB.connection

’通过ODBCDSN打开数据库

cnn.open“pubs”,”sa”,””

’检查是否成功建立连接对象

ifcnn.state=adStateOpenthen

msgbox“Welcometopubs!

else

msgbox“Sorry,nopubs!

endif

’关闭连接对象

cnn.close

Endsub

其重要属性如表1—1所示。

表1-1Connection对象属性列表

属性

功能

ConnectionString

打开Connection时的参数设置。

主要有以下几项:

Provider、FileName、RemoteProvider、RemoteServer、URL

DefaultDatabase

定义Connection对象的缺省数据库

Provider

定义Connection对象的数据库OLEDB的提供者,如SQLServer之类

State

当前状态,只读。

主要返回值为adStateOpen或adStateExecuting

其重要方法如表1—2所示。

表1-2Connection对象方法列表

方法

功能

BeginTrans

开始一个新的处理事务(Transaction)

RollbackTrans

放弃当前所有的处理事务并开启一个新的事务

Cancel

终止当前的数据库操作

Close

关闭释放Connection对象

Execute

执行SQL语言,或者查询

Open

打开Connection对象

在建立连接对象后,可以通过conn.Execute方法执行SQL,实现所需的一切功能。

编写数据库程序时,在修改数据库内容方面,这种方法很方便而且功能强大。

2.记录集对象——Recordset

Recordset对象表示的是来自基本表或命令执行结果的记录全集,任何时候,Recordset对象所指的当前记录均为集合内的单个记录。

可使用Recordset对象操作来自提供者的数据,使用ADO时,通过Records对象可对几乎所有数据进行操作。

所有Recordset对象均使用记录(行)和字段(列)进行构造。

由于提供者所支持的功能不同,某些Recordset方法或属性有可能无效。

打开Recordset时,当前记录位于第一个记录(如果有),并且BOF和EOF属性被设置为False。

如果没有记录,BOF和EOF属性设置是True。

假设提供者支持相关的功能,可以使用MoveFirst、MoveLast、MoveNext和MovePrevious方法以及Move方法,和AbsolutePosition、AbsolutePage和Filter属性来重新确定当前记录的位置。

Recordset对象可支持两类更新:

立即更新和批更新。

使用立即更新,一旦调用Update方法,对数据的所有更改将被立即写入基本数据源。

也可以使用AddNew和Update方法将值的数组作为参数传递,同时更新记录的若干字段。

如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用UpdateBatch方法在单个调用中将它们传送给数据库。

这种情况应用于使用AddNew、Update和Delete方法所做的更改。

调用UpdateBatch方法后,可以使用Status属性检查任何数据冲突并加以解决。

3.命令对象——Command(了解)

Command对象也是ADO的特色之一。

一般用于大量数据的操作或者是对数据库表单结构的操作。

Command的重要属性如表1-3所示,重要方法如表1-4所示。

表1-3Command对象属性列表

属性

功能

ActiveConnection

指定当前命令对象属于哪个Connection

CommandStream

指定提供命令参数的流

CommandText

指定参数

Dialect

指定参数的语法规范

State

Command对象运行状态

表1-4Command对象方法列表

方法

功能

Cancel

放弃操作

CreateParameter

创建参数

Excute

执行参数

4.字段对象——Field

Field对象代表使用普通数据类型的数据的列。

Recordset对象含有由Field对象组成的Fields集合。

每个Field对象对应于Recordset中的一列,其重要属性如表1-5所示。

表1-5Field对象属性列表

属性

功能

Name

返回字段名

DefineSize

返回己声明的字段大小

Value

查看或更改字段中的数据

ActualSize

返回给定字段中数据的实际大小

NativeError

指示给定Error对象的、特定提供者的错误代码

重要方法如表1-6所示。

表1-6Field对象方法列表

属性

功能

AppendChunk

将数椐追加到大型文本、二进制数据中

GetChunk

返回大型文本或二进制数据Field对象的全部或部分内容

5.错误集合——Errors(了解)

Error对象包含与单个操作(涉及提供者)有关的数据访问错误的详细信息。

任何涉及ADO对象的操作都会生成一个或多个提供者错误。

每个错误出现时,一个或多个Error对象将被放到Connection对象的Errors集合中。

当另一个ADO操作产生错误时,Errors集合将被清空,并在其中放入新的Error对象集。

每个Error对象都代表特定的提供者错误而不是ADO错误,ADO错误被记载到运行时例外处理机制中。

例如,在MicrosoftVisualBasic中,产生特定AD0的错误将触发OnError

事件并出现在Err对象中。

Error的主要属性如表1-7所示。

表1-7Error对象属性列表

属性

功能

Description

包含错误的文本

Number

包含错误常量的长整型数目

Source

标识产生错误的对象。

在向数据源发出请求之后,如果Errors集合中有多个Error对象,则将会用到该属性

SQLState

指示给定Error对象的sQL状态

NativeError

指不给定Errorr对象的、特定提供者的错误代码

出现提供者错误时,Error对象将被放在Connection对象的Error集合中。

ADO支持由单个ADO操作返回多个错误,以便显示特定提供者的错误信息。

要在错误处理程序中获得丰富的错误信息,可使用相应的语言或所在工作环境下的错误捕获功能,然后使用嵌套循环枚举出Errors集合的每个Error对象的属性。

Errors集合的重要方法如表1-8所示。

表1-8Error集合的方法列表

方法

功能

Clear

删除集合中的所有对象

Item

根据名称或序号返回集合的特定成员

1.2用ADO对象操纵数据库

在使用ADO对象操作数据库时,主要采取如下的步骤和方法:

·打开数据库。

首先需要创建数据库连接对象(connection),然后调用该对象的Open方法即可打开数据库。

·操作数据库数据。

在数据库打开之后,通过Connection、Command对象执行SQL命令,或者创建记录集(Recordset)对象,使用该对象的各种方法就可以进行数据库数据的查询、定位以及增加、删除和修改。

·关闭数据库。

使用上面创建的数据库连接对象的close方法就可以进行数据库的关闭。

下面就分别详细介绍以上所说的各个步骤和方法。

1.2.1AD0连接数据库

1.连接到ODBC数据源

当前使用的所有DBMS(数据库管理系统)系统实际上都可以通过ODBC进行访问。

MicrosoftODBCProvider允许ADO连接到任何ODBC的数据源。

ODBC驱动程序对于当今使用的各种主要DBMS都有效,包括MicrosoftSQLServer、MicrosoftAccess(MicrosoftJet数据库引擎)和MicrosoftFoxPro以及诸如Oracle等非Microsoft数据库产品。

要连接MicrosoftODBCProvider,就需要将连接字符串属性(ConnectionString)的参数“Provider=”设置为:

MSDASQL,可以省略Provider参数。

可以使用或不使用预定义的数据源名(DSN)或FileDSN进行连接。

带有DSN或FileDSN的语法如下:

“[Provider=MSDASQL;]{DSN=name|FileDSN=filename};[DATABASE=database;]UID=user;PWD=password”

无DSN(非DSN连接)的语法如下:

“[Provider=MSDASQL;]DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password”

如果使用DSN或FileDSN,则必须通过“Windows控制面板”中的“ODBC管理器”进行定义。

作为设置DSN的替换方法,可以指定ODBC的驱动程序(DRIVER=),诸如;“SQLServer”、服务器名(SERVER=)和数据库名(DATABASE=)。

也可以在特定ODBC的参数或标准ADO定义的UserID和Password参数中为用户帐号:

指定用户账号名(UID=)和密码(PWD=)。

即使DSN定义已经指定了数据库,也可以在DSN之外指定DATABASE参数以便连接到不同的数据库。

这同时更改了DSN定义以包括指定的数据库。

使用DSN时始终包括DATABASE参数是一种好办法。

这样将保证能连接到正确的数据库,因为其他用户可能会在上一次检查DSN定义后更改默认的数据库参数。

2.连接到Access数据库

可以使用指定OLEDB提供者和连接字符串来连接Access数据文件。

例如:

setcon=newADODB.connection

con.Open"provider=Microsoft.Jet.OLEDB.4.0;

DataSource=c:

\library.mdb;PersistSecurityInfo=False"

其中c:

\library.mdb为数据库的路径和名称。

如果数据库有密码,则:

Provider=Microsoft.Jet.OLEDB.4.0;Password=sa;UserID=rose;DataSource=c:

\library.mdb;PersistSecurityInfo=True

其中rose为用户名;sa为密码

如果数据库是局域网其他计算机上的,那么这个数据库所在的至少上一层目录为共享,采用下面办法:

Provider=Microsoft.Jet.OLEDB.4.0;UserID=rose;DataSource=

\\qyKong\data\library.mdb;PersistSecurityInfo=False

这里“\\qyKong\data\library.mdb”为在网络邻居中名qyKong的机器上(IP也可以)上的data文件夹下的名为library的Access数据。

3.连接到SQLServer数据源

以下范例通过打开3个使用不同提供者的Connection对象演示Provider属性,还使用DefaultDatabase属性设置MicrosoftODBC提供者的默认数据库。

PrivateSubProviderx()

Dimcnn1AsADODB.Connection

Dimcnn2AsADODB.Connection

Dimcnn3AsADODB.Connection

'使用MicrosoftODBC提供者打开数据库

Setcnn1=NewADODB.Connection

cnn1.ConnectionString="driver={SQLServer};"&_

"server=bigsmile;uid=sa;pwd=pwd"

cnn1.Openstrcnn

cnn1.DefaultDatabase="Pubs"

'显示提供者

MsgBox"cnn1provider:

"&cnn1.Provider

'使用MicrosoftJet提供者打开数据库

Setcnn2=NewADODB.Connection

cnn2.Provider="Microsoft.Jet.OLEDB.3.51"

cnn2.Open"c:

\samples\northwind.mdb","admin"

'显示提供者

MsgBox"cnn2provider:

"&cnn2.Provider

'使用MicrosoftSQL服务器提供者打开数据库

Setcnn3=NewADODB.Connection

cnn3.Provider="sqloledb"

cnn3.Open"Datasource=srv;InitialCatalog=pubs;","sa"

'显示提供者

MsgBox"cnn3provider:

"&cnn3.Provider

cnn1.Close

cnn2.Close

cnn3.Close

EndSub

通过以上介绍,可以总结出ADO与不同数据库连接所使用的连接字符串如下:

●ODBC连接

1ODBC-DSN连接

方法:

cnn.Open"dsn=advWorks;uid=admin;pwd=;"

advWorks为数据源名。

②ODBC-FileDSN连接

方法:

cnn.Open"filedsn=c:

\somepath\mydb.dsn;uid=admin;pwd=;"

③ODBCDriverforAccess

方法:

cnn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq=c:

\somepath\mydb.mdb;uid=admin;pwd=;"

④ODBCDriverforSQLServer

方法:

cnn.Open"driver={SQLServer};server=myServerName;database=myDatabaseName;uid=admin;pwd=;"

●OLEDBProvider连接

1OLEDBProviderForMicrosoftJet

方法:

con.Open"provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:

\somepath\mydb.mdb;uid=admin;pwd=;"

2OLEDBProviderForODBCDatabase

Access(Jet)方法:

cnn.Open"Provider=MSDASQL;driver={MicrosoftAccessDriver(*.mdb)};dbq=c:

\somepath\mydb.mdb;uid=myUserName;pwd=myPassWord;"

SQLServer:

方法:

cnn.Open"Provider=MSDASQL;driver={SQLServer};server=myServerName;database=myDatabaseName;uid=myUserName;pwd=myPassWord;"

●MSremote连接

1MSremoteforAccess(Jet)

通过ODBCDSN方法:

cnn.Open"Provider=MSremote;RemoteServer=http:

//myServerName;RemoteProvider=MSDASQL;dsn=advWorks;uid=myUserName;pwd=myPassWord;"

通过OLEDBProvider方法:

cnn.Open"Provider=MSremote;RemoteServer=http:

//myServerName;RemoteProvider=Microsoft.Jet.OLEDB.4.0;database=myDatabaseName;uid=admin;pwd=;"

2MSremoteforSQLServer

通过ODBCDSN方法:

cnn.Open"Provider=MSremote;RemoteServer=http:

//myServerName;RemoteProvider=MSDASQL;dsn=myDataSourceName;

uid=myUserName;pwd=myPassWord;"

通过OLEDBProvider方法:

cnn.Open"Provider=MSremote;RemoteServer=http:

//myServerName;RemoteProvider=SQLOLEDB;dataSource=myServerName;

InitialCatalog=myDatabaseName;uid=myUserName;pwd=myPassWord;"

1.2.2用记录集(Recordset)对象操纵数据

记录集(Recordset)对象是ADO操作数据最常用的对象,也是学习的关键所在。

1.创建、打开RecordSet对象以及浏览数据记录

下面来学习一个例子(例6.0):

注意:

要想在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。

引用方式是执行“工程”菜单的“引用”命令,启动引用对话框,在清单中选取“MicrosoftActiveXDataObjects2.0Library”选项。

PublicSubADOOopenRecords()

DimcnnAsADODB.Connection

DimrstAsADODB.Recordset

DimfldAsADODB.Field

'打开连接

Setcnn=NewADODB.Connection

cnn.Open"provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\northwind.mdb;PersistSecurityInfo=False"

'打开方式forward_only,read_only

Setrst=NewADODB.Recordset

rst.Open"select*from客户where地区='WA'",cnn,adOpenForwardOnly,adLockReadOnly

'输出第一个记录的所有字段值

ForEachfldInrst.Fields

Debug.Printfld.Value&";";

Next

Debug.Print

'关闭数据记录集对象

rst.Close

cnn.Close

EndSub

至于Move,MoveNext,MoveFirst之类的方法,和DAO用法相同。

2.查询数据记录

ADO的查询数据库记录只有Find方法,该方法允许使用一个查找字符串,它由单引号(’)或数码符号(#)加以封闭。

双引号(”)不能使用,数码符号必须封闭数值。

如果使用Like操作符,就可以用星号(*)作为字符串值中的通配符。

然而,星号必须是值中的最后一个字符或值中的唯一字符。

否则会发生运行时错误。

除了搜寻条件外,Find方法还有几个参数。

应指明开始搜索时要跳过的记录数;否则,搜索从当前记录开始。

当要开始搜索下一个值时,应当指明一个起始值。

在记录集中也可以指明是否向回搜索(相开头)或者向前(向尾部),可以通过指明书签作为搜索的开始位置。

find方法的调用语法是:

RstName.FindstrCriteria[,IngSkipRecords,IngSearchDirection[,varStart]]

其中strCriteria是查找条件,比较符仅限于“=”、“>”、“<”、“>=”、“<=”和“LIKE”,比较只是针对于表中的单个字段。

3.增、删、改数据记录

ADO可以用与DAO完全相同的方法进行添加、删除的操作。

唯一不同的是要先建立一个connection对象。

ADO还提供了一种快捷的添加方式:

Rst.AddNewArray("CompanyName","Phone"),Array("ABCDCO","(010)123-4567")

修改现有记录时,ADO不需要调用Edit方法,直接对当前记录某字段属性赋值之后调用update方法就可以实现。

4.构造无数据源的数据集

所述的无“数据源”连接,意义不是不需要数据源,否则连接无从谈起,而是不需要配置注册数据源所进行的连接。

ODBC是用不同数据源的标准编程语言接口。

根据前面的有关章节介绍,在实现ODBC时,必须首先配置ODBC环境,进行数据源的注册,然后才能在对数据库编程时,对数据源进行连接、访问和操作。

ADO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1