ADO三个基本接口

合集下载

ADO总结

ADO总结

一、ADO对象模型: 下面简单介绍一下ADO的对象模型ADO有三大对象,即Connection对象,Command对象,RecordSet对象. Connection(对象) ─Errors(集合)─Error(对象) Command(对象) ─Parameters(集合)─Parameter(对象) RecordSet(对象) ─Fields(集合)─Field(对象) 其中Connection对象,Command对象,RecordSet对象和Field对象又分别具有Properities集合而产生Properity 对象.我们在asp编程中已经对这几个对象有了足够的了解.下面是以上三大对象的相互关系. Command.ActiveConnection-$#@62;Connection RecordSet.ActiveConnection-$#@62;Connection Connection.Execute-$#@62;RecordSet Command.Execute-$#@62;RecordSet RecordSet.Source-$#@62;Command 好了,有了以上的关系表后,你应该能理解有一些等价的表达形式了. 形式1 set rs = Server.CreateObject("ADODB.RecordSet") strConn = "driver={SQL Server};server=srv;"& _ "uid=sa;pwd=;database=pubs" strSQL = "Select * From Employee ;" rs.open strSQL,strConn,,,adCmdText 形式2 set conn = Server.CreateObject("ADODB.Connection") strConn ="driver={SQL Server};server=srv;"& _ "uid=sa;pwd=;database=pubs" conn.open strConn set rs = Server.CreateObject("ADODB.RecordSet") rs.ActiveConnection=conn(注意此句) strSQL = "Select * From Employee ;" rs.open strSQL,,,,adCmdText "上面这句也可以写成rs.open strSQL,conn,,,adCmdText 形式3 set conn = Server.CrreateObject("ADODB.Connection") set rs = Server.CreateObject("ADODB.RecordSet") strConn ="driver={SQL Server};server=srv;"& _ "uid=sa;pwd=;database=pubs" conn.open strConn strSQL = "Select * From Employee ;" rs=conn.Execu strSQL(注意次句) 形式 4 set rs = Server.CreateObject("ADODB.RecordSet") strConn ="driver={SQL Server};server=srv;"& _ "uid=sa;pwd=;database=pubs" strSQL = "Select * From Employee ;" rs.open strSQL,strConn,,,adCmdText 注:上面的例子中均假设SQL Server的name=srv,使用SQL Server Authentication采用了默认的帐号sa,该帐号没有设定密码。

ADO对象操作Access数据库关键技术

ADO对象操作Access数据库关键技术

ADO对象操作Access数据库关键技术ADO对象操作Access数据库关键技术ADO(ActiveX Data Object)是目前Microsoft通用的数据访问技术。

ADO编程模型定义一组对象,用于访问和更新数据源,它提供了一系列方法完成以下任务:连接数据源、查询记录、添加记录、更新记录、删除记录、检查建立连接或执行命令时可能产生的错误。

一、ADO对象ADO是基于组件的数据库访问接口,可以来自多种数据提供者的数据进行读取和写入操作。

ADO的3个成员对象:(1)Connection对象(连接对象):建立应用程序与数据源的连接。

(2)Command对象(操作命令对象):在创建数据连接的基础上,利用Command 对象可以实现对数据源的查询、插入、删除、编辑修改及更新操作。

(3)Recordset对象(记录集对象):执行数据访问或SQL命令得到动态记录集,它被缓存在内存中。

ADO的3个集合对象:(1)Errors集合对象。

它依赖于Connection对象的使用。

(2)Parameters集合对象。

它依赖于Command对象的使用。

(3)Fields集合对象。

它依赖于Recordset对象的使用。

1、Connection对象该对象用来实现应用程序与数据源的连接。

只有连接成功后,Command对象和Recordset对象才能访问某个数据库。

2、Command对象该对象主要作用是在VBA中用SQL语句访问、查询数据库中的数据,可以完成Recordset对象不能完成的操作,如创建表、修改表结构、删除表、将查询结果保存为新表等。

3、Recordset对象Recordset对象的功能最常用、最重要,它可以访问表和查询对象,返回的记录存储在Recordset对象中。

通过该对象可以浏览记录、修改记录、添加新记录或者删除特定记录。

二、在Access中引用ADO对象在Access的模块设计时要想使用ADO对象,首先应该增加一个对ADO库的引用。

ado

ado

主要方法:
Open:打开到数据源的连接。 Close:关闭打开的对象和任何相关的对象。 Execute:执行指定的查询、SQL 语句、存储过程或提供者特有 的文本。
Command对象主要属性、方法 :
主要属性:
ActiveConnection :指示对象当前所属的 Connection 对象。 CommandText :指示要根据提供者发出的:执行 CommandText 属性中指定的查询、SQL 语句或存 储过程。
RecordSet 对象主要属性、方法 :
主要属性:
AbsolutePosition:指示Recordset对象的当前记录的序号位置。 BOF 和 EOF :指示当前记录位置位于 Recordset 对象的第一个 记录之前和最后一个记录之后。 MaxRecords:指示由查询返回给 Recordset 的最大记录数目。
ADO 简介
1、ADO是什么
ADO(ActiveX Data Object)是OLE DB数据访问方式 的一种主要对象模型。
2、ADO能做什么
• ADO最普遍的用法就是在关系数据库中查询一个表 或多个表,然后在应用程序中检索并显示查询结 果,可能还允许用户更改并保存数据。通过编程 使用ADO还可执行其他任务,包括: • 使用SQL查询数据库并显示结果。 • 通过Internet访问文件存储中的信息。 • 操作电子邮件系统中的消息和文件夹。 • 将来自数据库的数据保存在XML文件中。 • 允许用户查看数据库表中的数据并进行更改。
• Stream对象表示二进制或文本数据的数据流。例 如,XML 文档可以加载到数据流中以便进行命令 输入,也可以作为查询结果从某些提供者那里返 回。Stream对象可用于对包含这些数据流的字段 或记录进行操作。 • Parameter对象表示与基于参数化查询或存储过程 的Command对象相关联的参数。 • Field对象表示一列普通数据类型数据。每个 Field对象对应于Recordset中的一列。 • Property对象表示由提供者定义的ADO对象的特征。 ADO对象有两种类型的属性:内置属性和动态属性。 内置属性是指那些已在ADO中实现并且任何新对象 可以立即使用的属性。Property对象是基本提供 者所定义的动态属性的容器。 • Error对象包含有关数据访问错误的详细信息,这 些错误与涉及提供者的单个操作有关。

知识拓展:ADO数据访问技术

知识拓展:ADO数据访问技术

ADO数据访问技术摘自《Visual C++ + SQL Server数据库应用实例完全解析》启明工作室编著,人民邮电出版社出版,2006年4月第一版。

ADO的全称是ActiveX Data Objects。

Visual C++提供了丰富的数据库访问技术,如ADO、ODBC、DAO和RDO等,其中,ADO是最新的数据库访问技术,它是使用更为简单,而又更加灵活的对象模型。

对于新工程,应该使用ADO作为数据访问接口。

1. ADO数据模型Figure 6. ADO Object ModelADO提供执行以下操作的方式:➢连接到数据源。

➢指定访问数据源的命令,同时可带变量参数或优化执行。

通常涉及ADO的Command对象。

➢执行命令,例如一个SELECT脚本。

➢如果这个命令使数据库按表中行的形式返回,则将这些行存储在易于检查、操作或更改的缓存中。

➢适当情况下,可以把缓存行的更改内容写回数据库中,更新数据源。

➢提供常规方法检测错误(错误通常由建立连接或执行命令造成),涉及ADO的Error对象。

ADO编程模型提供了以下主要元素:1)连接。

通过“连接”可以从应用程序中访问数据源。

连接时必须指定要连接到的数据源以及连接所使用的用户名和口令等信息。

对象模型使用Connection对象完成连接功能。

2)命令。

可以通过已建立的连接发出命令,对数据源进行指定的操作。

一般情况下,可以通过命令在数据源中添加、修改或删除数据,也可以检索满足指定条件的数据。

在对象模型中使用Command对象来体现命令的概念。

3)参数。

在执行命令时可指定参数,参数可以在命令发布之前进行更改。

例如,可以重复发出相同的数据检索命令,但是每一次指定的检索条件不同。

对象模型用Parameter对象来体现参数概念。

4)记录集。

查询命令可以将查询结果存储在本地,这些数据以“行”为单位,返回市局的集合被称为记录集。

对象模型将记录集体现为Recordset对象。

ado.net 连接各种数据库的原理

ado.net 连接各种数据库的原理

连接各种数据库的原理是.NET平台下进行数据访问的一个接口,它支持多种数据库系统的连接和操作。

在使用连接各种数据库之前,我们需要了解其基本原理,以便更好地实现数据访问。

一、概述是.NET框架下用于数据访问的API,它提供了一种简单、高效的方法来连接、查询和操作各种数据库系统。

基于网络数据协议,支持异步数据访问,能够处理各种数据格式,如SQL、XML等。

二、数据库连接方式提供了多种数据库连接方式,包括:1. 连接字符串:连接字符串指定了数据库的位置、类型和身份验证方式等信息,是连接数据库的重要参数。

示例:连接字符串为“Server=localhost;Database=mydatabase;UserId=myusername;Password=mypassword;”表示连接到本地服务器上的名为mydatabase的数据库,使用myusername用户名和mypassword密码进行身份验证。

2. SqlConnection:SqlConnection是中用于连接SQL Server数据库的类。

它提供了打开和关闭数据库连接的方法,以及执行SQL查询和命令的方法。

示例:使用SqlConnection连接SQL Server数据库的代码示例如下:string connectionString = “Data Source=localhost;Initial Catalog=mydatabase;User ID=myusername;Password=mypassword;”;SqlConnection connection = newSqlConnection(connectionString);connection.Open();//执行SQL查询或命令connection.Close();3. OleDbConnection:OleDbConnection是中用于连接各种ODBC数据源的类,包括Access、Excel等数据库系统。

ADO三个对象

ADO三个对象

3, Recordset对象 记录集表示基本表,或者表示命令执行结果的记录全集。需要注意的是,Recordset对象的当前记录是集合中的单个记录。
采用ADO时,可以使用Recordset对象操作来自提供者的数据,也可以使用Recordset对象对数据库中的所有数据进行操作。结构上,所有的Recordset对象均由记录(行)tion对象 连接对象表示到数据源的连接,同时也表示与数据源的惟一会话。在使用ADO操作数据库前,必须首先创建一个连接对象。
2, Command对象 命令对象用于定义对数据源执行的特定命令,主要用于查询数据库,并返回Recordset对象中的记录,以便大量操作,或对数据库结构进行操行。

ADO组件详解

ADO组件详解

ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。

ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。

例如,如果您希望编写应用程序从DB2或Oracle数据库中向网页提供数据,可以将ADO程序包括在作为活动服务器页(ASP)的HTML 文件中。

当用户从网站请求网页时,返回的网页也包括了数据中的相应数据,这些是由于使用了ADO代码的结果。

在Delphi 5.0 以上的版本都可以很好的支持ADO技术。

Delphi中ADO 主要有1、ADOConnection 用于链接数据库2、ADOCommand ADODataSet用来查询或执行SQL语名;3、DataSource数据中间存储组件;4、DBGrid数据显示出来;其实主要是用ADO连接,而ADO也是最常用的连接技术之一。

以下几个控件在连接数据库时是用得比较多的,并且通常的的连接架构是————————————————————数据库↑ADOConnection↑↑ADOCommand ADODataSet↑DataSource↑DBGrid————————————————————或者————————————————————数据库↑↑ADOCommand ADODataSet↑DataSource↑DBGrid————————————————————也就是说,ADOCommand和ADODataSet既可以通过ADOConnection连接数据库,也可以不用,分别直接连接数据库,因为这三个控件都有一个共同的ConnectionString属性。

一、 TADOConnection组件该组件用于建立数据库的连接。

ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等。

该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其ConnectionString属性,可以直接连接到数据库。

ADO三个基本接口

ADO三个基本接口

ADO库包含三个基本接口:_ConnectionPtr 接口、_CommandPtr接口和_RecordsetPtr 接口Conn ection、Recordset和Comma nd分别表示连接对象、记录集对象和命令对象。

三个对象对应的智能指针分别是:_ConnectionPtr 、_RecordsetPtr、_CommandPtr。

ADO 使用_ConnectionPtr 这个指针来操纵Connection 对象,类似地,后面用到的_CommandPtr和_RecordsetPtr分别表示命令对象指针和记录集对象指针。

参考:svn中文网_Co nn ecti on Ptr接口返回一个记录集或一个空指针。

通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。

使用_Co nn ectio nPtr 接口返回一个记录集不是一个好的使用方法。

对于要返回记录的操作通常用_RecordserPtr来实现。

而用_Co nn ectio nPtr 操作时要想得到记录条数得遍历所有记录,而用_RecordserPtr时不需要。

_Comma ndPtr接口返回一个记录集。

它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。

在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr 接口,也可以在_CommandPtr接口里直接使用连接串。

如果你只执行一次或几次数据访问操作,后者是比较好的选择。

但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_Co nn ectio nPtr 接口创建一个数据连接,然后使用_Comma ndPtr接口执行存储过程和SQL语句。

_RecordsetPtr是一个记录集对象。

与以上两种对象相比,它对记录集提供了更多的控制功能,女口记录锁定,游标控制等。

同_Comma ndPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr 的conn ection成员变量,让它自己创建数据连接。

VC 使用ADO连接数据库

VC   使用ADO连接数据库

一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。

ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。

ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。

ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。

之所以称为 ADO,是用了一个比较熟悉的暗喻,OLE 自动化接口。

OLE DB是一组”组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。

OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。

OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。

也就是说,OLE DB 并不局限于 ISAM、Jet 甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。

在实际应用中,这种多样性意味着可以访问驻留在 Excel 电子数据表、文本文件、电子邮件/目录服务甚至邮件服务器,诸如 Microsoft Exchange 中的数据。

但是,OLE DB 应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。

您需要的API 应该是一座连接应用程序和OLE DB 的桥梁,这就是 ActiveX Data Objects (ADO)。

二、在VC中使用ADO(开发步骤如下:)1、引入ADO库文件使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。

代码如下所示://用#import引入ADO库文件#import "c:\program files\common files\system\ado\msado15.dll" \no_namespaces \rename("EOF" adoEOF")这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。

vb ado

vb ado

在VB中常用的数据库访问接口有三种,即DAO、RDO、ADO 三种对象模式。

三种模式的具体解释见上篇文章:DAO/RDO/ADO,ODBC,OLEDB之间的关系本篇文章我们重点介绍一下ADO的应用。

一:ADO的简介ADO(ActiveX Data Object)是由微软公司开发的最新的数据库访问接口技术,因为ADO技术对OLEDB(Object Link and Embedding DataBase)进行了封装并实现了OLEDB所有的功能,所以ADO通过OLEDB可以访问任何类型的数据源,并且减少了编程量。

ADO访问数据库的体系可以概括为:二:基本流程:ADO访问数据库的目标是访问、编辑和更新数据源,因此使用ADO进行数据访问时,一般需要经过一下步骤:(1)创建一个数据源的连接,连接数据库。

Set objCn = NewConnectionstrcn ="provider=microsoft.jet.oledb.4.0;persist security info=false;" &_"data source=" &App.Path & "\实例1.mdb" objCn.ConnectionString = strcnobjCn.Open(2)设置一个命令来访问数据源的数据。

(3)执行命令。

Set objCmd = New CommandSet objCmd.ActiveConnection = objCnWith objCmd.CommandText = "select * from 系统用户where 用户名 like ?" & "and 身份 like ?".CommandType = adCmdTextEnd WithDim Parm As New ParameterSet Parm =objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)objCmd.Parameters.Append ParmSet Parm =objCmd.CreateParameter("身份", adVarChar, adParamInput, 10)objCmd.Parameters.Append Parm(4)如果命令的执行导致返回数据库中表的某些行,则将他们保存在缓存中,产生相应的数据集对象,以便对其进行操作。

ADO接口

ADO接口
adCmdTable: 表明CommandText是一个表名
adCmdProc: 表明CommandText是一个存储过程
adCmdUnknown: 未知
Execute执行完后返回一个指向记录集的指针,下面我们给出具体代码并作说明。
try
{
_variant_t ra;
}
catch(_com_error e)
{....}
◆在这段代码中我们是通过Connection对象的Open方法来进行连接数据库的,下面是该方法的原型
HRESULT Connection15::Open (_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options )
为了取得结果记录集,我们定义一个指向Recordset对象的指针:
_RecordsetPtr m_pRecordset;
并为其创建Recordset对象的实例:
m_pRecordset.CreateInstance("ADODB.Recordset"中两个有用的属性ConnectionTimeOut与State
ConnectionTimeOut用来设置连接的超时时间,需要在Open之前调用,例如:
m_pConnection->ConnectionTimeout = 5; //设置超时时间为5秒
m_pConnection->Open("Data Source=adotest;","","",adModeUnknown);
我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完

ADO简介——精选推荐

ADO简介——精选推荐

ADO简介一、Active数据对象(ActiveDataObjects)ADO实际是一种提供访问各种数据类型的连接机制。

ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。

可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。

ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。

ADO 同时具有远程数据服务 (RDS) 功能,通过 RDS 可以在一次往返过程中实现将数据从服务器移动到客户端应用程序或 Web 页、在客户端对数据进行处理然后将更新结果返回服务器的操作。

RDS 以前的版本是 Microsoft Remote Data Service 1.5,现在,RDS 已经与 ADO 编程模型合并,以便简化客户端数据的远程操作。

二、ADO 提供执行以下操作的方式1.连接到数据源。

同时,可确定对数据源的所有更改是否已成功或没有发生。

2.指定访问数据源的命令,同时可带变量参数,或优化执行。

3.执行命令。

4.如果这个命令使数据按表中的行的形式返回,则将这些行存储在易于检查、操作或更改的缓存中。

5.适当情况下,可使用缓存行的更改内容来更新数据源。

6.提供常规方法检测错误(通常由建立连接或执行命令造成)。

在典型情况下,需要在编程模型中采用所有这些步骤。

但是,由于 ADO 有很强的灵活性,所以最后只需执行部分模块就能做一些有用的工作。

例如:将数据从文件直接存储到缓存行,然后仅用 ADO 资源对数据进行检查。

三、ADO 编程模型中的关键部分连接、命令、参数、记录集、字段、错误、属性、集合、事件。

1.连接通过“连接”可从应用程序访问数据源,连接是交换数据所必需的环境。

通过如Microsoft® Internet Information Server 作为媒介,应用程序可直接(有时称为双层系统)或间接(有时称为三层系统)访问数据源。

ado

ado

_variant_t sname,sage,sgrade,sbirth,smoney; m_pRecordset->MoveFirst(); while(!m_pRecordset->adoEOF) { sname=m_pRecordset->GetCollect("sname"); //取纪录字段值方式之二 //sname=m_pRecordset->GetCollect(_variant_t((long)0));
【6】关闭记录集与连接
记录集或连接都可以用Close方法来关闭 m_pRecordset->Close(); //关闭记录集 m_pConnection->Close(); //关闭连接
23
19
}
ADO使用详细步骤
【5】记录集的更新1 str.Format(“insert
into student values(‘%s’,‘%s’ ,’%s’ ,%d,’%s’)”,m_s no,m_sname,m_sex,m_sage,m_sdept); m_pConnection->Execute(_bstr_t(str),NULL, adCmdText);
10
ADO使用基本流程

(1)初始化COM库,引入ADO库定义文件 (2)用Connection对象连接数据库 (3)用Recordset对象取得记录集进行查询、处理。 (4)连接释放对象。
11
ADO使用详细步骤
【1】COM库的初始化

使用AfxOleInit()来初始化COM库,在 InitInstance()的函数中完成: BOOL C***App::InitInstance() { AfxOleInit(); //CoInitialize(NULL) ...... }

数据库访问接口(ODBC、OLEDB、ADO)

数据库访问接口(ODBC、OLEDB、ADO)

数据库访问接⼝(ODBC、OLEDB、ADO)最近在学C#的数据库编程,对于数据库接⼝技术这块的知识⼀直⽐较模糊,⽹上查了不少资料,看了⼏天还是朦朦胧胧的,只能做些笔记再研究了。

我们都知道,“数据库”是指⼀组相关信息的集合,最早的计算机应⽤之⼀也是开发数据库系统,即通过计算机来存储和检索数据的机制。

在数据库发展的前⼏⼗年⾥,数据以各种不同的⽅式存储并展现给⽤户,⽐如:层次数据库、⽹状数据库,这些都是⾮关系数据库。

直到1970年,才出现了“关系模型”,借助冗余数据来链接不同表中的记录,关系数据库中的每张表都包含⼀项作为每⾏唯⼀标识的信息(主键)。

关系型数据库:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL⾮关系型数据库:NoSql、Cloudant、MongoDb、redis、HBase 在最初的时候,对数据库的程序访问是由本机库来执⾏的,例如SQL Server的DBLib、Oracle的OCI。

这种⽅式的优点就是速度快,但缺点更明显,开发⼈员需使⽤不同的API来访问不同的数据库系统。

⼀旦更换数据库,⼯作量将会很⼤。

⼀.ODBC(Open Database Connectivity)开放数据库连接是为解决异构数据库间的数据共享⽽产⽣的,允许应⽤程序以SQL 为数据存取标准,存取不同DBMS(关系型数据管理系统)管理的数据;使应⽤程序直接操纵DB中的数据,免除随DB的改变⽽改变。

⽤ODBC 可以访问各类计算机上的DB⽂件,甚⾄访问如Excel 表和ASCI I数据⽂件这类⾮数据库对象。

它建⽴了⼀组规范,并提供了⼀组对数据库访问的标准API(应⽤程序编程接⼝)。

这些API利⽤SQL来完成其⼤部分任务。

ODBC本⾝也提供了对SQL语⾔的⽀持,⽤户可以直接将SQL语句送给ODBC。

总⽽⾔之,ODBC提供了⼀个公共数据访问层,可⽤来访问⼏乎所有的RDBMS。

ADO相关操作及语句

ADO相关操作及语句

/data/oledb/download.htm
在下载之前请先确认OLE DB SDK提供的各项特性。下载文件大约有15M,如果完全安装的话要占用80M的硬盘空间。如果你只对ADO感举趣,就选择最小安装,这样只会占用你15M的硬盘空间。关于ADO的网页在:
UpdateBatch指示 ADO 正在向提供程序发送更新批处理。仅适用于三层方案。如果有,为 ADO 将更新发送到的远程服务器名。
三、在哪里能得到ADO?
目前ADO1.5版已经可以从微软网站免费下载。到目前为止,微软网站仍是你获取有关ADO最新信息的最佳场所。ADO1.5是作为OLE DB SDK的一部分提供的。你可以从下面这个网址下载:
Sort指示 ADO 准备筛选或对数据排序。排序或筛选应用于记录集数据的判据。
Transaction Rollback指示 ADO
要中止当前本地事务。返回真或假。如果为真,则保持中止,即该事务中止后紧跟着开始另一事务。如果为假,则不保持中止。
TransactionCommit指示 ADO 正在提交 OLE DB
六、ADO 对象编程模型
连接数据源 (Connection),可选择开始事务。可选择创建表示 SQL 命令的对象 (Command)。
可选择指定列、表以及 SQL 命令中的值作为变量参数 (Parameter)。执行命令(Command、Connection 或 Recordset)。
本文将主要介绍Connection和Recordset这两个对象。每个Connection的属性定义了与数据源的连接。Recordset对象接收来自数据源的数据。Recordset可以与Connection一起起使用,先建立一个连接,然后获取数据。尽管如此,Recordset也可以被单独创建,其Connection参数可以在Open属性定义。

ADO第一次亲密接触

ADO第一次亲密接触
(2)通过DSN数据源对任何支持ODBC的数据库进行连接:
m_pConnection->Open("Data Source=adotest;UID=sa;PWD=;","","",adModeUnknown);
(3)不通过DSN对SQL SERVER数据库进行连接: m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUn known);
(1)利用Connection对象的Execute方法执行SQL命令 Execute方法的原型如下所示: _RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ) 其中CommandText是命令字串,通常是SQL命令。 参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText 中内容的类型,Options可以取如下值之一: adCmdText:表明CommandText是文本命令 adCmdTable:表明CommandText是一个表名 adCmdProc:表明CommandText是一个存储过程 adCmdUnknown:未知
-1-
ADO 开发指南(程式猎人收集整理)
几点说明: (1) 您的环境中msado15.dll不一定在这个目录下,请按实际情况修改 (2) 在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们 不要理会这个警告。 msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

ADO介绍

ADO介绍

ADO 教程在我们的 ADO 教程中,您将学到有关 ADO 的知识,以及如何使用 ADO 从您的网站访问数据库。

ADO 简介ADO 被用于从网页访问数据库。

您应当具备的基础知识在继续学习之前,您需要对下面的知识有基本的了解:         WWW、HTML 以及对网站构建的基本了解 ASP(动态服务器页面) SQL(结构化查询语言)什么是 ADO?ADO 是一项微软的技术 ADO 指 ActiveX 数据对象(ActiveX Data Objects) ADO 是一个微软的 Active-X 组件 ADO 会随微软的 IIS 被自动安装 ADO 是一个访问数据库中数据的编程接口从 ASP 页面访问数据库从一个 ASP 页面内部访问数据库的通常的方法是:       创建一个到数据库的 ADO 连接 打开数据库连接 创建 ADO 记录集 从记录集提取您需要的数据 关闭记录集 关闭连接ADO 数据库连接在从某个网页访问数据之前,必须先建立一个数据库连接。

创建一个 DSN-less 数据库连接连接到某一个数据库的最简单的方法是使用一个 DSN-less 连接。

DSN-less 连接可被用于您的站点上的任何微软 Access 数据库。

假设您拥有一个名为 "northwind.mdb" 的数据库位于 "c:/webdata/" 的 web 目录中, 您可以使用下 面的 ASP 代码连接到此数据库:<% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" %>注意,在上面的例子中,您必须规定微软的 Access 数据库驱动程序(Provider) ,以及此数据库在计算 机上的物理路径。

ado对象详解

ado对象详解

ado对象详解
ADO(ActiveX Data Objects)是一组用于访问数据源的组件和对象,它允许开发者通过编程方式访问和操作数据,并提供了一种简单、高效的方式来连接和操作各种不同类型的数据源。

ADO对象是ADO中的核心组件,包括以下几种类型:
1. Connection对象:用于建立与数据源的连接,可以指定连接字符串来连接不同类型的数据源。

2. Command对象:用于执行SQL语句或存储过程,可用于对数据源进行查询、插入、更新和删除等操作。

3. Recordset对象:用于存储查询结果集,可以对结果集进行遍历、排序、筛选和修改等操作。

4. Field对象:表示Recordset中的一个字段,可以访问和修改该字段的值。

5. Parameter对象:用于向存储过程传递参数。

6. Error对象:用于处理ADO操作过程中的错误和异常。

ADO对象是使用VBScript、VB、VC++等编程语言进行开发的重要工具,可以帮助开发者更加高效地操作和管理数据源。

ado接口使用说明文档

ado接口使用说明文档

Ado 接口文档说明使用方法1.CADODatabase::Open (BOOL Open(LPCTSTR lpstrConnection = _T(""));)说明:打开数据库,和数据原的连接过程,例子1:CADODatabase pAdoDb;CString strConnection = _T("");strConnection = _T("Provider=MSDASQL;PersistSecurityInfo=False;""Trusted_Connection=Yes;""Data Source=Access Sql Server;catalog=sampledb"); pAdoDb.SetConnectionString(strConnection);if(pAdoDb.Open())DoSomething();连接Serves SQL数据库的例子例子2:CADODatabase pAdoDb;CString strConnection = _T("");strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;""Data Source=C:\\VCProjects\\ADO\\Test\\dbTest.mdb"); pAdoDb.SetConnectionString(strConnection);if(pAdoDb.Open())DoSomething();连接ACCESSDATABASE数据库的例子2.CADODatabase::Execute (BOOL Execute(LPCTSTR lpstrExec))说明:嵌入SQL语句,可以执行完整的SQL来操作数据库例子:CADODatabase pAdoDb;CString strConnection = _T("");strConnection = _T("Provider=MSDASQL;""PersistSecurityInfo=False;""Trusted_Connection=Yes""Data Source=Access Sql Server;catalog=sampledb");if(pAdoDb.Open(strConnection))pAdoDb.Execute("Delete From tblClients Where Cheker = 3"); 3.CADODatabase::GetActiveConnection说明:得到当前的数据库连接4.CADODatabase::GetRecordCount((_RecordsetPtr m_pRs)说明,得到当前查询到的记录数目//Sample with Connection string for SQL ServerCADODatabase pAdoDb;CString strConnection = _T("");strConnection = _T("Provider=MSDASQL;PersistSecurityInfo=False;""Trusted_Connection=Yes;""Data Source=Access Sql Server;catalog=sampledb"); pAdoDb.SetConnectionString(strConnection);if(pAdoDb.Open())DoSomething();...//Sample with Connection String for Access databaseCADODatabase pAdoDb;CString strConnection = _T("");strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;""Data Source=C:\\VCProjects\\ADO\\Test\\dbTest.mdb"); pAdoDb.SetConnectionString(strConnection);if(pAdoDb.Open())DoSomething();...CADODatabase::ExecuteThe Execute function executes a sql statement in the open database.BOOL Execute(LPCTSTR lpstrExec)ParametersLPCTSTR lpstrExec A string pointer containinig the sql statement to execute.CADODatabase pAdoDb;CString strConnection = _T("");strConnection = _T("Provider=MSDASQL;""PersistSecurityInfo=False;""Trusted_Connection=Yes""Data Source=Access Sql Server;catalog=sampledb");if(pAdoDb.Open(strConnection))pAdoDb.Execute("Delete From tblClients Where Cheker = 3");Return ValueThe function returns TRUE if was succesfully.CADODatabase::GetRecordsAffectedThe GetRecordsAffcted function returns the number of records affected to the last sql statement executed.int GetRecordsAffected();CADODatabase::GetActiveConnectionThe GetActiveConnection returns the active connection._ConnectionPtr GetActiveConnection();CADODatabase::GetRecordCountGetRecordCount returns the number of records affected in a query.DWORD GetRecordCount(_RecordsetPtr m_pRs);Parameters_RecorsetPtr m_Prs The recordset.CADODatabase::BeginTransactionCall this function to initiate a transaction. After you call BeginTransaction, updates you make to your data take effect when you commit the transaction.long BeginTransaction();CADODatabase::CommitTransactionCall CommitTransaction function to commit a transaction for example save a group of edits and updates to one or more databases.long CommitTransaction();CADODatabase::RollbackTransactionCall RollbackTransaction function to end the current transaction and restore all databases to their condition before the transaction was begun.long RollbackTransaction();CADODatabase::IsOpenThe IsOpen funtion returns the status of the connection with the database.BOOL IsOpen();Return ValueThe function returns TRUE if the connection to database is open.CADODatabase::CloseThe Close function close the connection to the database.void Close();CADODatabase::SetConnectionStringWith the SetConnectionString You can insert the connection string.void SetConnectionString(LPCTSTR lpstrConnection);ParametersLPCTSTR lpstrConnection A connection string used for opening the database.see CADODatabase::Open()CADODatabase::GetConnectionStringThe GetConnectionString function returns the connection string used for make a connection with a database.CString GetConnectionString();CADODatabase::GetLastErrorThe GetLastError function returns the last error code.DWORD GetLastError();CADODatabase::GetLastErrorStringThe GetLastErrorString function returns the last error string.CString GetLastErrorString();The CADORecordset ClassThe CADORecordset class has a set of functions that corresponds to the_RecordsetPtr.CADORecordset::CADORecordsetCreates a CADORecordset object.CADODatabase();CADORecordset(CADODatabase* pAdoDatabase);ParametersCADODatabase* pAdoDatabase A CADODatabase object pointer. CADORecordset::OpenThe Open function opens a recordsetBOOL Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec = _T(""),int nOption = CADORecordset::openUnknown);BOOL Open(LPCTSTR lpstrExec = _T(""),int nOption = CADORecordset::openUnknown);Parameters_ConnectionPtr mpdb A connection pointer.LPCTSTR lpstrExec A string pointer containinig an SQL select statement.int nOption An integer that defines the access mode. The values are as follows: CADORecordset::openUnknownCADORecordset::openQueryCADORecordset::openTableCADORecordset::openStoredProcReturn ValueReturns TRUE if was successfully.See sampleCADORecordset::ExecuteThe Execute function opens a recordsetBOOL Execute(CADOCommand* pCommand);ParametersCADOCommand* pCommand A CADOCommand pointer.Return ValueReturns TRUE if was successfully.See sampleCADORecordset::GetQuery;GetQuery returns the string containing the SQL Select statement.CString GetQuery();CADORecordset::SetQueryvoid SetQuery(LPCSTR strQuery);ParametersLPCTSTR strQuery A string pointer containinig an SQL Select statement. CADORecordset::RecordBindingBOOL RecordBinding(CADORecordBinding pAdoRecordBinding); ParametersCADORecordBinding pAdoRecordBindingCADORecordset::GetRecordCountGetRecordCount returns the number of records accessed in the recordset DWORD GetRecordCount();See sampleCADORecordset::IsOpenIsOpen determines if the recordset is open.BOOL IsOpen();Return ValueThis member function returns TRUE if the recordset has not been closed. CADORecordset::CloseThe Close function closes the recordset.void Close();See sampleCADORecordset::GetFieldCountThe GetFieldCount function returns the number of fields in the recordset. long GetFieldCount();CADORecordset::GetFieldValueThe GetFieldValue function returns a value that contains the value of a field.BOOL GetFieldValue(LPCTSTR lpFieldName, int nValue);BOOL GetFieldValue(int nIndex, int nValue);BOOL GetFieldValue(LPCTSTR lpFieldName, long lValue);BOOL GetFieldValue(int nIndex, long lValue);BOOL GetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);BOOL GetFieldValue(int nIndex, unsigned long ulValue);BOOL GetFieldValue(LPCTSTR lpFieldName, double dbValue);BOOL GetFieldValue(int nIndex, double dbValue);BOOL GetFieldValue(LPCTSTR lpFieldName, CString strValue,CString strDateFormat = _T(""));BOOL GetFieldValue(int nIndex, CString strValue,CString strDateFormat = _T(""));BOOL GetFieldValue(LPCTSTR lpFieldName, COleDateTime time);BOOL GetFieldValue(int nIndex, COleDateTime time);BOOL GetFieldValue(LPCTSTR lpFieldName, bool bValue);BOOL GetFieldValue(int nIndex, bool bValue);BOOL GetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);BOOL GetFieldValue(int nIndex, COleCurrency cyValue);ParametersLPCTSTR lpFieldName A pointer to a string that contains the name of a field.int nIndex A zero-based index of the field in the recordset’s Fields collection, for lookup by index.double dbValue A reference to a object that will store the value of a field.long lValue A reference to a object that will store the value of a field.unsigned long ulValue A reference to a object that will store the value of a field.int nValue A reference to a object that will store the value of a field.CString strValue A reference to a object that will store the value of a field.CString strDateFormat A formatting time string similar to the strftime formatting string. The more common are:∙%a Abbreviated weekday name∙%A Full weekday name∙%b Abbreviated month name∙%B Full month name∙%c Date and time representation appropriate for locale∙%d Day of month as decimal number (01 - 31)∙%H Hour in 24-hour format (00 - 23)∙%I Hour in 12-hour format (01 - 12)∙%j Day of year as decimal number (001 - 366)∙%m Month as decimal number (01 - 12)∙%M Minute as decimal number (00 - 59)∙%p Current locale’s A.M./P.M. indicator for 12-hour clock∙%S Second as decimal number (00 - 59)∙%U Week of year as decimal number, with Sunday as first day of week (00 - 53)∙%w Weekday as decimal number (0 - 6; Sunday is 0)∙%W Week of year as decimal number, with Monday as first day of week(00 - 53)∙%x Date representation for current locale∙%X Time representation for current locale∙%y Year without century, as decimal number (00 - 99)∙%Y Year with century, as decimal numberCOleDateTime time A reference to a object that will store the value of a field. bool bValue A reference to a object that will store the value of a field. COleCurrency cyValue A reference to a object that will store the value of a field.See sampleCADORecordset::IsFieldNullThe IsFieldNull function determines if the field data is null.BOOL IsFieldNull(LPCTSTR lpFieldName);BOOL IsFieldNull(int nIndex);ParametersLPCTSTR lpFieldName A pointer to a string that contains the name of a field.int nIndex A zero-based index of the field in the recordset’s Fields collection, for lookup by index.Return ValueThis function returns TRUE if the field data is Null.CADORecordset::IsFieldEmptyThe IsFieldEmpty function determines if the field data is Empty.BOOL IsFieldEmpty(LPCTSTR lpFieldName);BOOL IsFieldEmpty(int nIndex);ParametersLPCTSTR lpFieldName A pointer to a string that contains the name of a field.int nIndex A zero-based index of the field in the recordset’s Fields col lection, for lookup by index.Return ValueThis function returns TRUE if the field data is Empty.CADORecordset::IsEofBOOL IsEof();Return ValueThis function returns TRUE if the current position contains no records.See sampleCADORecordset::IsBofBOOL IsBof();Return ValueThis function returns TRUE if the current position is the bottom of the recordset.CADORecordset::MoveFirstCADORecordset::MoveNextCADORecordset::MovePreviousCADORecordset::MoveLastThis functions make the First/Next/Previous/or Last record of the recordset the current record.void MoveFirst();void MoveNext();void MovePrevious();void MoveLast();See sampleCADORecordset::GetAbsolutePageCADORecordset::SetAbsolutePageIndicates on which page the current record resides.long GetAbsolutePage();void SetAbsolutePage(int nPage);Parametersint nPage The number of the page starting from 1.See sampleCADORecordset::GetPageCountGetPageCount returns the number of pages in the recordset.long GetPageCount();See sampleCADORecordset::GetPageSizeCADORecordset::SetPageSizeIndicates the number of records per page.long GetPageSize();void SetPageSize(int nSize);Parametersint nSize Set the number of records per page.For exampleCADORecordset pRs(&pDb);if(pRs.Open("MyBigTable", CADORecordset::openTable)){pRs.SetPageSize(5);for(register int nPageIndex = 1; nPageIndex <= pRs.GetPageCount(); nPageIndex++){pRs.SetAbsolutePage(nPageIndex);for(register int nRecNumber = 0; nRecNumber < pRs.GetPageSize(); nRecNumber++){long lVal;pRs.GetFieldValue("ID", lVal);pRs.MoveNext();if(pRs.IsEof())break;}}pRs.Close();}CADORecordset::GetAbsolutePositionCADORecordset::SetAbsolutePositionIndicates the position of the record in the recordset.long GetAbsolutePosition();void SetAbsolutePosition(int nPosition);Parametersint nPosition Move to the position in the recordset.GetAbsolutePosition() can returns the position of the record or one of the following values:CADORecordset::positionUnknownCADORecordset::positionBOFCADORecordset::positionEOFCADORecordset::GetFieldInfoGetFieldInfo returns the attributes of a field.BOOL GetFieldInfo(LPCTSTR lpFieldName, CAdoFieldInfo* fldInfo);BOOL GetFieldInfo(int nIndex, CAdoFieldInfo* fldInfo);ParametersLPCTSTR lpFieldName A pointer to a string that contains the name of a field.int nIndex A zero-based index of the field in the recordset's Fields collection, for lookup by index.CAdoFieldInfo* fldInfo A struct that returns the field attributes.struct CADOFieldInfo{char m_strName[30];short m_nType;long m_lSize;long m_lDefinedSize;long m_lAttributes;short m_nOrdinalPosition;BOOL m_bRequired;BOOL m_bAllowZeroLength;long m_lCollatingOrder;};The element m_nType of the class CADOFieldInfo can be one of the following values CADORecordset::typeEmptyCADORecordset::typeTinyIntCADORecordset::typeSmallIntCADORecordset::typeIntegerCADORecordset::typeBigIntCADORecordset::typeUnsignedTinyIntCADORecordset::typeUnsignedSmallIntCADORecordset::typeUnsignedIntCADORecordset::typeUnsignedBigIntCADORecordset::typeSingleCADORecordset::typeDoubleCADORecordset::typeCurrencyCADORecordset::typeDecimalCADORecordset::typeNumericCADORecordset::typeBooleanCADORecordset::typeErrorCADORecordset::typeUserDefinedCADORecordset::typeVariantCADORecordset::typeIDispatchCADORecordset::typeIUnknownCADORecordset::typeGUIDCADORecordset::typeDateCADORecordset::typeDBDateCADORecordset::typeDBTimeCADORecordset::typeDBTimeStampCADORecordset::typeBSTRCADORecordset::typeCharCADORecordset::typeVarCharCADORecordset::typeLongVarCharCADORecordset::typeWCharCADORecordset::typeVarWCharCADORecordset::typeLongVarWChar CADORecordset::typeBinaryCADORecordset::typeVarBinaryCADORecordset::typeLongVarBinary CADORecordset::typeChapterCADORecordset::typeFileTimeCADORecordset::typePropVariantCADORecordset::typeVarNumericCADORecordset::typeArrayFor exampleCADORecordset prs(&m_pDb);if(prs.Open("Clients", CADORecordset::openTable)){CADOFieldInfo pInfo;prs.GetFieldInfo("Description", &pInfo);if(pInfo.m_nType == CADORecordset::typeVarChar)AfxMessageBox("The type Description Field Is VarChar");}if(prs.Open("TestTable", CADORecordset::openTable)){CADOFieldInfo* fInfo = new CADOFieldInfo;prs.GetFieldInfo(0, fInfo);CString strFieldName = fInfo->m_strName;prs.Close();}Return ValueReturns TRUE if was successfully.CADORecordset::GetChunkThis function returns all, or a portion, of the contents of a large text or binary data Field object.BOOL GetChunk(LPCTSTR lpFieldName, CString& strValue);BOOL GetChunk(int nIndex, CString& strValue);BOOL GetChunk(LPCTSTR lpFieldName, LPVOID pData);BOOL GetChunk(int nIndex, LPVOID pData);ParametersLPCTSTR lpFieldName A pointer to a string that contains the name of a field.int nIndex A zero-based index of the field in the recordset's Fields collection, for lookup by index.CString& strValue A string pointer that contains the data that returns from the object.LPVOID pData A pointer that contains the data that returns from the object.Return ValueReturns TRUE if was successfully.See sampleCADORecordset::AppendChunkThis function appends data to a large text or binary data Field.BOOL AppendChunk(LPCTSTR lpFieldName, LPVOID lpData, UINT nBytes);BOOL AppendChunk(int nIndex, LPVOID lpData, UINT nBytes);ParametersLPCTSTR lpFieldName A pointer to a string that contains the name of a field.int nIndex A zero-based index of the field in the recordset's Fields collection, for lookup by index.LPVOID lpData A pointer that contains the data to append to the object.UINT nBytes A UINT that indicates the size of the data to be inserted.Return ValueReturns TRUE if was successfully.For example//Sample of AppendChunckprs.AddNew();prs.SetFieldValue("ID", 5);prs.SetFieldValue("Description", "Client 05");prs.SetFieldValue("Checker", 1);prs.AppendChunk("Document", "This Document is the story of Bob and his Friends...", 37);prs.Update();//Sample of GetChunckchar data[1024];prs.GetChunk("Document", (LPVOID)&data);CADORecordset::GetStringThis function returns a recordset as a string.CString GetString(LPCTSTR lpCols, LPCTSTR lpRows, LPCTSTR lpNull,long numRows = 0);ParametersLPCTSTR lpCols A columns delimiter.LPCTSTR lpRows A rows delimiter.LPCTSTR lpNull A expression that represents a null value.long numRows The number of rows affected.CADORecordset::GetLastErrorThe GetLastError function returns the last error code.DWORD GetLastError();CADORecordset::GetLastErrorStringThe GetLastErrorString function returns the last error string.CString GetLastErrorString();CADORecordset::AddNewThe AddNew function adds a record in the open recordset.BOOL AddNew();Return ValueReturns TRUE if was successfully.See sampleCADORecordset::EditThe Edit function allow changes to the current record in the open recordset. void Edit();CADORecordset::DeleteThe Delete function deletes the current record in the open recordset.BOOL Delete();Return ValueReturns TRUE if was successfully.CADORecordset::UpdateThe Update function updates the pending updates in the current record.BOOL Update();Return ValueReturns TRUE if was successfully.See sampleCADORecordset::CancelUpdateThe CancelUpdate function cancels any pending update in the open recordset. void CancelUpdate();CADORecordset::SetFieldValueThe SetFieldValue function sets the value of a field.BOOL SetFieldValue(int nIndex, int nValue);BOOL SetFieldValue(LPCTSTR lpFieldName, int nValue);BOOL SetFieldValue(int nIndex, long lValue);BOOL SetFieldValue(LPCTSTR lpFieldName, long lValue);BOOL SetFieldValue(int nIndex, unsigned long ulValue);BOOL SetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);BOOL SetFieldValue(int nIndex, double dblValue);BOOL SetFieldValue(LPCTSTR lpFieldName, double dblValue);BOOL SetFieldValue(int nIndex, CString strValue);BOOL SetFieldValue(LPCTSTR lpFieldName, CString strValue);BOOL SetFieldValue(int nIndex, COleDateTime time);BOOL SetFieldValue(LPCTSTR lpFieldName, COleDateTime time);BOOL SetFieldValue(int nIndex, bool bValue);BOOL SetFieldValue(LPCTSTR lpFieldName, bool bValue);BOOL SetFieldValue(int nIndex, COleCurrency cyValue);BOOL SetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);ParametersLPCTSTR lpFieldName A pointer to a string that contains the name of a field.int nIndex A zero-based index of the field in the recordset’s Fields collection, for lookup by index.int nValue A pointer to a object containing the value of the field.long lValue A pointer to a object containing the value of the field.unsigned long lValue A pointer to a object containing the value of the field.double dbValue A pointer to a object containing the value of the field.CString strValue A pointer to a object containing the value of the field.COleDateTime time A pointer to a object containing the value of the field.bool bValue A pointer to a object containing the value of the field.COleCurrency cyValue A pointer to a object containing the value of the field. Return ValueReturns TRUE if was successfully.See sampleFor exampleCADORecordset prs(&m_pAdoDb);prs.Open("Test", openTable);prs.AddNew();prs.SetFieldValue(0, "dataU");prs.SetFieldValue(1, "data01");prs.SetFieldValue(2, (long)51000);COleDateTime time = COleDateTime(2001,6,15, 10, 8, 30);prs.SetFieldValue(3, time);prs.Update();CADORecordset::FindThe Find function locates a string from the current position in the open recordset using a operator of comparison.BOOL Find(LPCTSTR lpFind,int nSearchDirection = CADORecordset::searchForward);ParametersLPCTSTR lpFind A string expression used to locate the record.int nSearchDirection A value that indicate the type of operation. The possible values are:CADORecordset::searchForward Find the next locationCADORecordset::searchBackward Find the previous locationReturn ValueReturns TRUE if was successfully.For exampleif(prs.Find("Field0 LIKE 'dataU%'")){prs.Delete();while(prs.FindNext())prs.Delete();}CADORecordset::FindFirstThe FindFirst function locates a string from the begin in the open recordset using a operator of comparison.BOOL FindFirst(LPCTSTR lpFind);ParametersLPCTSTR lpFind A string expression used to locate the record.Return ValueReturns TRUE if was successfully.CADORecordset::FindNextThe FindNext function locates a string from the last position in the open recordset using the operator of comparison used in FindFirst or Find functions.BOOL FindNext();Return ValueReturns TRUE if was successfully.See sampleCADORecordset::GetBookmarkThe GetBookmark function saves the position of the current record.BOOL GetBookmark();Return ValueReturns TRUE if was successfully.CADORecordset::SetBookmarkThe SetBookmark function returns to the position saved at any time.void SetBookmark();Return ValueReturns TRUE if was successfully.CADORecordset::SetFilterThe SetFilter Indicates a filter for data in a open Recordset.BOOL SetFilter(LPCTSTR strFilter);ParametersLPCTSTR strFilter a string compose by one or more individual clauses concatenated with AND or OR operators.Return ValueReturns TRUE if was successfully.For exampleCADORecordset m_pRs;m_pRs = CADORecordset(&m_pDb);if(m_pRs.Open("tblTest", CADORecordset::openTable)){CString strFilter = _T("LastName = 'Smith' And Age > 30");m_pRs.SetFilter(strFilter);..m_pRs.Close();}CADORecordset::SetSortThe SetSort function sets the sort order for records in a CADORecordset object. BOOL SetSort(LPCTSTR lpstrCriteria);ParametersLPCTSTR lpstrCriteria A String that contains the ORDER BY clause of an SQL statementReturn ValueReturns TRUE if was successfully.CADORecordset::GetRecordsetThe GetRecordset function returns a pointer to an open recordset._RecordsetPtr GetRecordset();CADORecordset::GetActiveConnectionThe GetActiveConnection returns the active connection._ConnectionPtr GetActiveConnection();CADORecordset::CloneThe Clone function Creates a duplicate CADORecordset object from an existing CADORecordset object.BOOL Clone(CADORecordset pAdoRecordset);ParametersCADORecordset pAdoRecordset is an existing CADORecordset Object.Return ValueReturns TRUE if was successfully.For exampleCADORecordset m_pRs; //Original RecordsetCADORecordset RS; //Duplicate Recordsetm_pRs = CADORecordset(&m_pDb);if(m_pRs.Open("tblTest", CADORecordset::openTable)) //Open the Original Recordset{m_pRs.Clone(RS); //Create the clone of the original Recordsetlong lClonRecs = RS.GetRecordCount();long lOrigRecs = m_pRs.GetRecordCount();..RS.Close();m_pRs.Close();}CADORecordset::SaveAsXMLThe SaveAsXML function Save the open recordset in a file with XML Format.BOOL SaveAsXML(LPCTSTR lpstrXMLFile);ParametersLPCTSTR strXMLFile a string that indicate the complete path name of the file where the Recordset to be saved.Return ValueReturns TRUE if was successfully.CADORecordset::OpenXMLThe OpenXML function Open a XML File Format in a recordset.BOOL OpenXML(LPCTSTR lpstrXMLFile);ParametersLPCTSTR strXMLFile a string that indicate the complete path name of the XML file to be opened.Return ValueReturns TRUE if was successfully.For exampleCADORecordset pRs;if(prs.OpenXML("C:\\My.XML")){CString strClient = _T("");double dblVal = 0;long lrecs = prs.GetRecordCount();if(!prs.IsEof())prs.MoveFirst();prs.GetFieldValue("Budget", dblVal);prs.GetFieldValue("ClientName", strClient);prs.Close();}Sample 01:CADODatabase pAdoDb;CString strConnection = "";strConnection = _T("Provider=MSDASQL;""PersistSecurityInfo=False;Trusted_Connection=YesData Source=Access Sql Server;catalog=sampledb");if(pAdoDb.Open((LPCTSTR)strConnection)){CString strQry = _T("");int numRecords;strQry.Format(_T("sp_StoreClientFields_ps '%s', %d"),(LPCTSTR)strParam1, nParam2);CADORecordset pRs(&pAdoDb);if(!pRs.Open((LPCTSTR)strQry))return FALSE;numRecords = pRs.GetRecordCount();while(!pRs.IsEof()){CString strVal = _T("");int nVal = 0;//Get Numeric Field ValuepRs.GetFieldValue("NumField1", nVal)//Get String Field DatapRs.GetFieldValue("StrField..", strVal)DoSomething(nVal, strVal);pRs.MoveNext();}pRs.Close();}elsereturn FALSE;The CADOParameter ClassThe CADOParameter class has a set of functions that corresponds to the_ParameterPtr.CADOParameter::CADOParameterCreates a CADOParameter object.CADOParameter(int nType, long lSize = 0, int nDirection = paramInput, CString strName = _T(""));Parametersint nType A int value that specifies the data type of the CADOParameter object. Can be one of the values specified in CADORecordset::GetFieldInfo. If are using CADORecordset::typeNumeric or CADORecordset::typeDecimal, must to define the precision and scale values.long lSize = 0 A optional long value that specifies the maximum length for the parameter value in Bytes or characters.int nDirection = paramInput A optional int value that specifies the direction of the CADOParameter object. Can be one of following values:CADOParameter::paramUnknown Indicates that the parameter direction is unknown.CADOParameter::paramInput Default. Indicates that the parameter represents an input parameter.CADOParameter::paramOutput Indicates that the parameter represents an output parameter.CADOParameter::paramInputOutput Indicates that the parameter represents both an input and output parameter.CADOParameter::paramReturnValue Indicates that the parameter represents a return value.CString strName = _T("") A optional string that specifies the name of the CADOParameter object.See sampleCADOParameter::SetValueThe SetValue function sets the value for the CADOParameter object.BOOL SetValue(int nValue);BOOL SetValue(long lValue);BOOL SetValue(double dbValue);BOOL SetValue(CString strValue);BOOL SetValue(COleDateTime time);BOOL SetValue(_variant_t vtValue);Parametersint nValue A int value containing the parameter value.long lValue A long value containing the parameter value.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口Connection、Recordset和Command,分别表示连接对象、记录集对象和命令对象。

三个对象对应的智能指针分别是:_ConnectionPtr、_RecordsetPtr、_CommandPtr。

ADO使用_ConnectionPtr这个指针来操纵Connection对象,类似地,后面用到的_CommandPtr和_RecordsetPtr分别表示命令对象指针和记录集对象指针。

参考:svn中文网_ConnectionPtr接口返回一个记录集或一个空指针。

通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。

使用 _ConnectionPtr接口返回一个记录集不是一个好的使用方法。

对于要返回记录的操作通常用_RecordserPtr来实现。

而用 _ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用_RecordserPtr时不需要。

_CommandPtr接口返回一个记录集。

它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。

在使用_CommandPtr接口时,你可以利用全局 _ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。

如果你只执行一次或几次数据访问操作,后者是比较好的选择。

但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr 接口执行存储过程和SQL语句。

_RecordsetPtr是一个记录集对象。

与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。

同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给 _RecordsetPtr的connection成员变量,让它自己创建数据连接。

如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。

1._ConnectionPtr接口_ConnectionPtr m_pConnection;///声明数据库连接变量Connection对象最常用的Open方法和Execute方法。

pen方法用于打开一个库连接,而Execute方法一般用于执行一条SQL语句。

先定义一个Connection类型的指针,然后调用CreateInstance()来创建一个连接对象的实例,再调用Open函数建立与数据源的连接。

在建立连接对象后,可以使用连接对象的Execute()函数来执行SQL命令。

m_pConnection.CreateInstance(__uuidof(Connection));m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;DataSource=e:\\test.mdb;Persist Security Info=False;","","",adModeUnknown);(1)_ConnectionPtr智能指针Open方法的原型:Open(_bstr_t ConnectionString,_bstr_t UserID,_bstr_t Password,long Options)ConnectionString为连接字串,UserID是用户名,Password是登陆密码Options是连接选项,可以是如下几个常量:adModeUnknown 缺省,当前的许可权未设置adModeRead 只读adModeWrite 只写adModeReadWrite 可以读写adModeShareDenyRead 阻止其它Connection对象以读权限打开连接adModeShareDenyWrite 阻止其它Connection对象以写权限打开连接adModeShareExclusive 阻止其它Connection对象打开连接adModeShareDenyNone 阻止其它程序或对象以任何权限建立连接(2)_ConnectionPtr智能指针Open方法的原型:_RecordsetPtr Connection15::Execute(_bstr_t CommandText,VARIANT* RecordsAffected,long Options)其中CommandText是命令字串,通常是SQL命令,参数RecordsAffected是操作完成后所影响的行数参数Options表示CommandText中内容的类型,可以取下列值之一:adCmdText 表明CommandText是文本命令adCmdTable 表明CommandText是一个表名adCmdProc 表明CommandText是一个存储过程adCmdUnknown 未知Execute执行完后返回一个指向记录集的指针。

#include <iostream.h>#import "C:\Program Files\Common Files\system\ado\msado15.dll" rename("EOF","adoEOF")//插入数据void CConnPtr_Open_ExeDlg::OnBtnInsertInto(){_ConnectionPtr m_pConnection;_variant_t RecordsAffected;try{m_pConnection.CreateInstance(__uuidof(Connection));m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Northwind.mdb","","",adModeUnknown);}catch(_com_error e){CString errormessage; errormessage.Format("连接数据库失败!\r错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);return;}try{_bstr_t strCmd="INSERT INTO Employees(EmployeeID,FirstName,LastName,HireDate,City,Country)VALUES(10,'Mary','Williams','15/4/1993 12:00:00','New York','USA')";m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText);}catch(_com_error &e){AfxMessageBox(e.Description());}if(m_pConnection->State)m_pConnection->Close();}//更新数据void CConnPtr_Open_ExeDlg::OnBtnUpdate(){_ConnectionPtr m_pConnection;_variant_t RecordsAffected;try{m_pConnection.CreateInstance(__uuidof(Connection));m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Northwind.mdb","","",adModeUnknown);}catch(_com_error e){CString errormessage;errormessage.Format("连接数据库失败!\r错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);return;}try{_bstr_t strCmd="UPDATE Employees SET FirstName='Bill',LastName='Clinton',HireDate='25/11/1994 12:00:00',City='Los Angeles' WHERE EmployeeID=10";m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText);}catch(_com_error &e){AfxMessageBox(e.Description());}if(m_pConnection->State)m_pConnection->Close();}//根据条件查询数据void CConnPtr_Open_ExeDlg::OnBtnSelect(){_ConnectionPtr m_pConnection;_variant_t RecordsAffected;_RecordsetPtr m_pRecordset;try{m_pConnection.CreateInstance(__uuidof(Connection));m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Northwind.mdb","","",adModeUnknown);}catch(_com_error e){CString errormessage;errormessage.Format("连接数据库失败!\r错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);return;}try{m_pRecordset.CreateInstance("ADODB.Recordset"); //为Recordset对象创建实例_bstr_t strCmd="SELECT EmployeeID,FirstName,LastName,HireDate,CityFROM Employees WHERE City='London'";m_pRecordset=m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText);}catch(_com_error &e){AfxMessageBox(e.Description());}_variant_t vEmployeeID,vFirstName,vLastName,vHireDate,vCity;try{while(!m_pRecordset->adoEOF){vEmployeeID=m_pRecordset->GetCollect(_variant_t((long)0));//取得第1列的值,从0开始计数,你也可以直接列出列的名称,如下一行vFirstName=m_pRecordset->GetCollect("FirstName");vLastName=m_pRecordset->GetCollect("LastName");vHireDate=m_pRecordset->GetCollect("HireDate");vCity=m_pRecordset->GetCollect("City");CString strtemp;if(vEmployeeID.vt!=VT_NULL){strtemp.Format("%d",vEmployeeID.lVal);}if(vFirstName.vt!=VT_NULL){strtemp+=" ";strtemp+=(LPCTSTR)(_bstr_t)vFirstName;}if(vLastName.vt!=VT_NULL){strtemp+=" ";strtemp+=(LPCTSTR)(_bstr_t)vLastName;}if(vHireDate.vt!=VT_NULL){strtemp+=" ";strtemp+=(LPCTSTR)(_bstr_t)vHireDate;}if(vCity.vt!=VT_NULL){strtemp+=" ";strtemp+=(LPCTSTR)(_bstr_t)vCity;}m_list1.AddString(strtemp);m_list1.AddString("\n");m_pRecordset->MoveNext();}}catch(_com_error &e){AfxMessageBox(e.Description());}m_pRecordset->Close();m_pRecordset=NULL;m_pConnection->Close();m_pConnection=NULL;}2._CommandPtr接口_CommandPtr接口返回一个记录集或一个空指针。

相关文档
最新文档