(1新建一个Access数据库文件。将其命名为data.mdb,并创建好表、字段。

(2为系统添加数据源。打开“控制面板”—>“管理工具”—>“数据源”,选择“系统DSN”,点击右边的“添加”按钮,选择“Microsoft Access Driver(*.mdb)”,点击“完成”,给数据源起个名字,如conn,然后点击下面的“选择”,选择刚才建立好的data.mdb,点击“确定”,就完成了数据源的添加工作。

注:如果是64位的操作系统,在点击“添加”按钮时可能没有Microsoft Access Driver(*.mdb)选项,这时你可以打开C:\Windows\SysWOW64\odbcad32.exe,这里面就有了。

(3引入ado动态库文件。此时准备工作就已经做好了,接下来就是在MFC对话框工程(本文中工程名以Test为例)中进行数据库连接了。在stdafx.h头文件中添加对ado的支持,引入ado动态库文件,添加以下代码即可:

#import "C:\ProgramFiles\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
 
(4初始化COM环境。我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:

BOOL CTestApp::InitInstance() 

{ 

    AfxOleInit();

    ...... 

} 

注:还有另外一种初始化COM环境的方法,

BOOL CTestApp::InitInstance() 

{ 

    ::CoInitialize(NULL);//在app类中的InitInstance函数中添加

    ......

  ::CoUninitialize();//在app类中的InitInstance函数的最后(return之前)添加,释放COM环境

 } 

(5在对话框头文件CTestDlg.h的类中声明两个成员变量。

    _ConnectionPtr  m_pConnection;

    _RecordsetPtr   m_pRecordset;

(6接下来就是在对话框初始化的时候连接数据库了。在CTestDlg::OnInitDialog()中添加以下代码:

BOOL CTestDlg::OnInitDialog()

{

    // TODO:在此添加额外的初始化代码                 

    try

    {

        HRESULT hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象

        if(SUCCEEDED(hr))

        {

            hr =m_pConnection->Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =e:\\data.mdb","","",adModeUnknown);//连接数据库

            //hr =m_pConnection->Open("DRIVER={Microsoft Access Driver(*.mdb)};DBQ=e:\\data.mdb;","","",adModeUnknown);//连接数据库

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

        }

    }

    catch(_com_error e)//捕捉异常

    {

        CString errormessage;

        errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());

        AfxMessageBox(errormessage);//显示错误信息

    }

}

(7以上准备工作做好了,就可以在程序中使用m_pConnection,m_pRecordset了。调用示例如下:

void CTestDlg::OnBnClickedButton1()

{

         //TODO: 在此添加控件通知处理程序代码

         m_pRecordset.CreateInstance("ADODB.Recordset");

         m_pRecordset->Open("SELECT* FROM news WHERE id = 174",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

         _variant_t value = m_pRecordset->GetCollect("content");

         SetDlgItemText(IDC_EDIT1,(LPCTSTR)_bstr_t(value));

}
以上是我在news表中找出id=174的新闻,并在EDIT中显示其"content"。

注:可将以上步骤简单地总结一下:

  第一步:引入ado动态库文件。第二步:初始化COM环境。第三步:创建数据库连接Connection及记录集Recordset。

  通过以上步骤,就能让你的客户端和数据库交互了,可以对数据库进行增改删查等。

如何使用MFC连接Access数据库的更多相关文章

  1. 【.net 深呼吸】连接Access数据库应注意的几点

    本地数据库可以有Y种选择,比如Sqlite.SQL Server Express.SQL Local DB.SQL Server CE.Access等,本文老周选用比较著名的Access本地数据库,在 ...

  2. C#连接Access数据库(详解)

    做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以 ...

  3. ASP.net分别连接SQLserver数据库与连接Access数据库精英版

    -------------------------连接access2003 字符串------------------------- Provider=Microsoft.Jet.OLEDB.4.0; ...

  4. php连接Access数据库错误及解决方法

    <?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.m ...

  5. php连接Access数据库的三种方法

    http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/1115/3524.html 虽然不是一个类但先放这儿吧 最近想把一个asp的网站改成 ...

  6. 三种php连接access数据库方法

    种是利用php的pdo,一种是odbc,com接口来与access数据库连接.利用pdo与access数据库连接 $path ="f:fontwww.jb51.netspiderresult ...

  7. 具体解释VB中连接access数据库的几种方法

    在VB中,连接ACCESS数据库的方法主要有以下三种 使用ADO对象,通过编写代码訪问数据库 Connection 对象 ODBC数据源 使用ADO Data 控件高速创建数据库连接 有三种连接方法 ...

  8. C# 连接 Access 数据库

    c#连接Access 数据库需要System.Data, System.Data.OleDb using System.Data using System.Data.OleDb public OleD ...

  9. JSP连接access数据库

    一个用jsp连接Access数据库的代码. 要正确的使用这段代码,你需要首先在Access数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数 ...

随机推荐

  1. CMD(SA400 Command)

    一.CMD模糊查询: 命令行键入:CRT,WRK,ADD,CPY,DSP,CHG,CLR,FND,RTV*等. 二.CMD分类查询: 命令行键入:GO CMD xxx eg:GO CMD FILE,G ...

  2. 关于时钟模块DS1302的使用心得

    最近在做万年历,用到实时时钟DS1302模块,花了两天时间看资料和写驱动,想记录一下我的学习经过,顺便做一下总结. 首先就是在图书馆查各种资料,于是查到的大多是这些,主要时硬件方面的资料: 其实能查到 ...

  3. [在线Demo]使用Hibernate多租户实现SaaS服务

    上一篇文章 基于Hibernate实现多租户(Multi-Tendency)功能简单介绍了利用Hibernate的多租户功能提供SaaS服务的方法,但其中有很多不足,后来都得到了解决. 我尝试过抽取实 ...

  4. JF厂V8版本爱彼AP15703,黄家橡树离岸型,超越N厂神器

    根据调查的结果JF厂的爱彼AP15703几乎常年垄断了爱彼的市场,销量持续性的排在爱彼整个品牌中的第一位.JF厂这两年一直在攻克爱彼整个品牌,有了解的都知道 爱彼15703以前是N厂的五大复刻神器的代 ...

  5. c#public、private、protected、internal、protected internal修饰符及访问权限

    c#public.private.protected.internal.protected internal修饰符及访问权限 public 公有访问.不受任何限制. private 私有访问.只限于本 ...

  6. Android的主线程和子线程

    在一个Android 程序开始运行的时候,会单独启动一个Process.默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Co ...

  7. ng-options指令语法

    ng-options一般有以下用法 对于数组: label for value in array select as label for value in array label group by g ...

  8. Pick apples(大范围贪心,小范围完全背包)

    Pick apples Time Limit: 1000MS Memory Limit: 165536KB Submit Statistic Discuss Problem Description O ...

  9. 【IDEA】向IntelliJ IDEA创建的项目导入Jar包的两种方式

    转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 今天用IDEA,需要导入一个Jar包,因为以前都是用eclipse的,所以对这个id ...

  10. Spring各jar包作用及依赖

    先附spring各版本jar包下载链接http://repo.spring.io/release/org/springframework/spring/ spring.jar 是包含有完整发布模块的单 ...