学习ADO时总结的一些经验.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

学习ADO时总结的一些经验

用ADO操作数据库的方法步骤

?

ADO接口简介

ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。

_ConnectionPtr接口返回一个记录集或一个空指针。

通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。通常同Cdatabase一样,使用它创建一个数据连接,然后使用其它对象执行数据输入输出操作。

?

_CommandPtr接口返回一个记录集。

它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。

?

?

_RecordsetPtr是一个记录集对象。

与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。

?

?

基本流程

(1)初始化COM库,引入ADO库定义文件

(2)用Connection对象连接数据库

(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。

(4)使用完毕后关闭连接释放对象。

?

【1】COM库的初始化

我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完

成,请看如下代码:

?

BOOLCADOTest1App::InitInstance()

{

??AfxOleInit();

??

}

?

?

【2】用#import指令引入ADO类型库

我们在stdafx.h中加入如下语句:

#importc:\programfiles\commonfiles\system\ado\msado15.dllno_namespacerename(EOF,adoEOF)

其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。

?

【3】创建Connection对象并连接数据库

首先我们需要添加一个指向Connection对象的指针:

?

_ConnectionPtrm_pConnection;

?

BOOLCADOTest1Dlg::OnInitDialog()

{

?CDialog::OnInitDialog();

?try

?{

??HRESULThr=m_pConnection.CreateInstance(ADODB.Connection);//创建Connection对象

??if(SUCCEEDED(hr))

??{

???hr=m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;DataSource=test.mdb,,,adModeUnknown);//连接数据库

???//上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;??}

??}

?}

?catch(_com_errore)//COM错误取得,当执行COM功能的时候,如果出错,可以捕捉到_com_error的异常

?{?

??CStringstrComError;

??strComError.Format(错误编号:%08lx\n错误信息:%s\n错误源:%s\n错误描述:%s,

???????e.Error(),??????????????????//?错误编号

???????e.ErrorMessage(),???????????//?错误信息

???????(LPCSTR)e.Source(),????????//?错

文档评论(0)

188****0197 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档