小 明 1月/ 9/ 2020 | 0

首先,来解答一下什么是ADO,ADO 是一个访问数据库中数据的编程接口,其被用于从网页访问数据库,步骤如下:

  1. 创建一个到数据库的 ADO 连接
  2. 打开数据库连接
  3. 创建 ADO 记录集
  4. 从记录集提取您需要的数据
  5. 关闭记录集
  6. 关闭连接

以上是部分理论知识,下面开始实际操作利用ADO方式在VC++6.0 MFC中链接Access数据库文件。我在文章的最后面补充上一些解释和Github链接。

1.COM库的初始化

我们可以使用AfxOleInit()来初始化,这项工作通常在ADOAccess.cpp文件中的 BOOL CADOAccessApp::InitInstance()的重载函数中完成。代码如下:

BOOL CADOAccessApp::InitInstance()//ADOAccess这个是我创建工程的名字,也可以是任何名字,例:CWinApp::InitInstance()
{
AfxEnableControlContainer();
AfxOleInit();//初始化COM,创建ADO连接等操作
m_pConnection.CreateInstance(__uuidof(Connection));//创建链接
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=StudentScore.mdb","","",adModeUnknown); // 打开本地Access库StudenScore.mdb
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确定数据库StudentScore.mdb是否在当前目录中");
return FALSE;
}

在ADO操作中建议语句中要常用try…catch()来捕获错误信息,因为它有时会经常出现一些想不到的错误。

2.在CADOAccessAPP类下添加虚函数ExitInstance(),该函数作用为关闭记录集与数据库链接,添加之后系统会自动将该函数添加到ADOAccess.cpp文件中,只需写入如下代码即可:

if(m_pConnection->GetState())
{
m_pConnection->Close();
m_pConnection = NULL;
}

效果图

3.接下来该在头文件中添加与链接数据库有关的指令集。在ADOAccess.h文件中class CADOAccessApp : public CWinApp的公有类中添加_ConnectionPtr m_pConnection;指令集。效果如下:

添加之后,如果第2步正常添加虚函数,你会在这里发现这个,如果没有的话,说明你没有添加正确。

4.在ADOAccessDlg.h添加其余指令集_RecordsetPtr m_pRecordSet; _ConnectionPtr m_pConnection;_CommandPtr m_pCommand;而且需要在类外进行外部调用。效果如下:

5.最后的基本工作就是在StdAfx.h中用#import指令引入ADO类型库

为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句:

#import "C:\Program Files\Common Files\System\ado\msado15.dll"\no_namespace\rename("EOF","adoEOF")

其作用同#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。但需要注意的是,您的开发环境中msado15.dll不一定在这个目录下,请按实际情况修改。

6.以上的基本操作都进行完了,接下来开始最重要的页面的创建了。

这个是我创建的页面。整个工程在文章末尾的Github链接,类向导和成员函数这里就不多赘述了。

Githubhttps://github.com/ZSIRS/-VC-6.0-MFC-.git

创作不易,希望大家能提出宝贵意见!本人也会不定期在个人小站上进行创作,代码一般都会放在本人的Github上。

发表评论