- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)