ADO智能指针使用详解

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

ADO智能指针使用详解

一、ADO接口——Connection对象(连接对象)——对应智能指针为_ConnectionPtr

在使用ADO进行操作之前,必须使用AfxOleInit()函数来进行初始化。

使用BeginTrans、CommitTrans和RollbackTrans方法可以启动、提交和回滚一个处理事务。

通过操作the Errors 集合可以获取和处理错误信息,操作CommandTimeout属性可以设置连接的溢出时间,操作ConnectionString属性可以设置连接的字符串,操作Mode属性可以设置连接的模式,操作Provider属性可以指定OLE DB提供者。

(1)Open()方法:用于打开一个库连接

_ConnectionPtr智能指针的用法:

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

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

_ConnectionPtr智能指针Open()方法的原型:Open(_bstr_t ConnectionString,_bstr_t UserID,_bstr_t Password,long Options)

①ConnectionString为连接字串,UserID是用户名,Password是登陆密码

②Options是连接选项,可以是如下几个常量:

1> adModeUnknown 缺省,当前的许可权未设置

2> adModeRead 只读

3> adModeWrite 只写

4> adModeReadWrite 可以读写

5> adModeShareDenyRead 阻止其它Connection对象以读权限打开连接

6> adModeShareDenyWrite 阻止其它Connection对象以写权限打开连接

7> adModeShareExclusive 阻止其它Connection对象打开连接

8> adModeShareDenyNone 阻止其它程序或对象以任何权限建立连接

(2)Execute()方法:用于执行SQL语句

函数原型:_RecordsetPtr Connection::Execute(_bstr_t CommandText,VARIANT* RecordsAffected,long Options)

参数:

①CommandText是命令字串,通常是SQL命令,

②RecordsAffected是操作完成后所影响的行数

③Options表示CommandText中内容的类型,可以取下列值之一:

1> adCmdText 表明CommandText是文本命令

2>adCmdTable 表明CommandText是一个表名

3>adCmdProc 表明CommandText是一个存储过程

4>adCmdUnknown 未知

Execute执行完后返回一个指向记录集的指针(_ResultsetPtr类型)

(3)异常捕获:出现的异常为_com_error

Error对象包含了ADO数据操作时发生错误的详细描述,ADO的任何对象都可以产生一个或者多个数据提供者错误,当错误发生时,这些错误对象被添加到Connection 对象的Errors集合里。当另外一个ADO对象产生一个错误时,Errors集合里的Error对象被清除,新的Error对象将被添加到Errors集合里。

借助于Errosr对象的集合、方法和属性,可以通过读取Number和Description属性,获得ADO错误号码和对错误的描述,通过读取Source属性得知错误发生的源。

二、ADO接口——Recordset对象(记录集对象)——对应智能指针为_RecordsetPtr

_RecordsetPtr智能指针,它是专门为通过记录集操作数据库而设立的指针,通过该接口可以对数据库的表内的记录、字段等进行各种操作。记录集相当于是实际数据的一份拷贝。

A.创建记录集对象

_ConnectionPtr m_pRecordset;

m_pRecordset.CreateInstance(__uuidof(Recorset));

创建记录集对象,只是为它分配内存空间,记录集中不含任何数据。

B.打开记录集

记录集对象是用来获得数据库中的数据并对其操作的,所以还要打开记录集,从数据库中取得数据记录。可有多种方法打开记录集,如使用_CommondPt::.Execute()来返回一个记录集,或是用_Recordset::Open()方法来打开一个记录集。

(1)Open()方法

函数原型:

HRESULT Recordset::Open(const _variant_t&Source,const

_variant_t&ActiveConnection,enum CursorTypeEnum CursorType,enum LockTypeEnum LockType,long Options)

For Example:假设m_pConnection是已经建立好的连接,我们使用_RecordsetPtr 接口的Open方法打开Employees表的记录集的语句如下:

m_pRecordset->Open("SELECT * FROM Employees", _variant_t((IDispatch*)m_pConne ction,true), adOpenStatic, adLockOptimistic, adCmdText);

参数:

Source是数据查询字符串,可以是一个SQL语句、一个表的名字或一个命令对象等等;

ActiveConnection是已经建立好的连接(我们需要用Connection对象指针来构造一个_variant_t对象);

CursorType光标类型,它是枚举CursorTypeEnum中的一个值,可取如下值

相关文档
最新文档