全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在MFC的工程中添加一个access文件2、在MFC中添加记录集trym_pConn.CreateInstance(ADODB.Connection);_bstr_t Connection =Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.aaaa.mdb;Persist Security Info=False;/aaaa为你的access的文件名m_pConn-Open(Connection, , , adConnectUnspecified);catch(_com_error &e):CoUninitialize();:AfxMessageBox(e.ErrorMessage();return FALSE;3、在stdAfx.h文件中添加语句#import c:Program FilesCommon FilesSystemADOmsado15.dll no_namespace rename(EOF, ENDOFFILE)4、在需要打开数据库的地方添加打开表的函数StrSQL=Select * From bbbb;/bbbb为表名m_pRs.CreateInstance(ADODB.Recordset);m_pRs-Open(_variant_t)StrSQL, _variant_t(IDispatch *)theApp.m_pConn,true), adOpenStatic, adLockOptimistic, adCmdText);UpdateData(TRUE); /需要干的事情m_pRs-Update(); m_pRs-Close(); 追问需要ODBC连接的MFC连接Access讲解1.首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用 #import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现:#import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF, adoEOF) 【注意,在MFC中路径要用/或者】其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵数LoadTypeLib()。#import语句会在工程可执行程序输出目录中产生两个文件,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列包装方法。语句no_namespace说明ADO对象不使用命名空间,rename (EOF, adoEOF)说明将ADO中结束标志EOF改为adoEOF,以避免和其它库中命名相冲突。2.其次,在程序初始过程中需要初始化组件,一般可以用CoInitialize(NULL);来实现,这种方法在结束时要关闭初始化的COM,可以用下面语句CoUnInitialize();来实现。在MFC中还可以采用另一种方法来实现初始化COM,这种方法只需要一条语句便可以自动为我们实现初始化COM和结束时关闭COM的操作,语句如下所示: AfxOleInit(); 3.接着,就可以直接使用ADO的操作了。我们经常使用的只是前面用#import语句引用类型库时,生成的包装类.tlh中声明的智能指针中的三个,它们分别是_ConnectionPtr、_RecordsetPtr和_CommandPtr。下面分别对它们的使用方法进行介绍:_ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。使用 _ConnectionPtr接口返回一个记录集不是一个好的使用方法。对于要返回记录的操作通常用_RecordserPtr来实现。而用 _ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用_RecordserPtr时不需要。_CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,你可以利用全局 _ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr 接口执行存储过程和SQL语句。_RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给 _RecordsetPtr的connection成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。代码:1.建立一个MFC对话框工程2.在stdafx.h导入#import C:Program FilesCommon FilesSystemadomsado15.dll no_namespace rename(EOF,adoEOF)rename(BOF,adoBOF)3.新建一个Generic Class,取名AdoAccess。在public:下添加成员函数 _ConnectionPtr m_pConnection; / 数据库 _RecordsetPtr m_pRecordset; / 命令 _CommandPtr m_pCommand; / 记录void OnInitADOConn();void ExitConnect();然后写OnInitADOConn()和ExitConnect()函数void AdoAccess:OnInitADOConn():CoInitialize(NULL);trym_pConnection.CreateInstance(ADODB.Connection);或者 m_pConnection.CreateInstance(_uuidof(Connection);_bstr_t strConnect=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Home.mdb;/Home.mdb放在工程目录下 m_pConnection-Open(strConnect,adModeUnknown);AfxMessageBox(连接成功);catch(_com_error e)AfxMessageBox(连接失败);/这里是连接master数据库,无密码。void AdoAccess:ExitConnect()if(m_pRecordset!=NULL)m_pRecordset-Close();m_pConnection-Close();:CoUninitialize();4.可以开始用了:首先,把我们类的头文件包含在主程序#include AdoAccess.h申明一个全局变量:AdoAccess myAccess;/对象声明连接的代码可以做一个按钮eg:void CTestDBDlg:OnButton1() / TODO: Add your control notification handler code heremyAccess.OnInitADOConn();/连接到数据库或者在插入在OnInitDialog()函数里就行了。查询数据:m_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(SELECT * FROM Type,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);while(!m_pRe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一下物理期中考试题及答案
- 高处作业安全考试试题及答案
- 试剂硫酸生产线建设项目投标书
- 药物临床试验英文BOBBIE
- 肋骨骨折专题知识
- 2025湖南郴州市第三人民医院招聘2人备考笔试试题及答案解析
- 2026辽宁鞍山市铁东区教育局面向毕业生校园招聘13人(第二批)备考考试试题及答案解析
- 2025宁夏国运深井煤业有限公司社会招聘补充备考笔试试题及答案解析
- 2025年铜川市王益区总工会招聘(4人)考试笔试备考题库及答案解析
- 外研版英语代词练习题及答案及解析
- 人际关系解决方法
- 中小学生管理知识竞赛试题含答案
- 车辆和驾驶人管理模拟试题及答案
- 2025年广西公务员考试【申论A、B、C】真题及答案
- 钣金车间安全生产培训课件
- 自用船舶船主安全培训内容课件
- 2025年国家开放大学《经济学基础》期末考试备考试题及答案解析
- 银行信贷风险评估报告样本
- 水产养殖行业相关投资计划提议范本
- GB/T 12022-2025工业六氟化硫
- 青马培训课件
评论
0/150
提交评论