最近想写个图书管理软件,用到了数据库,但是由于是小白,弄了好半天才把数据库搞明白。虽然网上有一些教程,但大多都是长长的文字叙述,所以想写一个图文版的连接教程并把这两天的经验记录下来。

1、首先打开access(本人用的是2007版本),新建一个空白的数据库,并填入信息,如下图:

关闭此表,并重命名(例如test)。

2、打开vs2012,新建一个mfc工程名为managetest,在可视化界面中添加两个Edit control 控件,用来显示数据库中的信息,添加一个button按钮,用来触发。如下图。

3、在头文件stdafx.h中添加下面语句来支持ADO的组件类型库

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace  rename ("EOF", "adoEOF1")//adoEOF可以改成别的,不同的项目里面最好改成不一样的。

ps:如果stdafx.h加载出错,解决办法 http://blog.csdn.net/lphbtm/article/details/50730807

4、切换到managetest.cpp中的BOOL CBookManageApp::InitInstance()函数中添加一下代码,用以初始化COM。

if(!AfxOleInit())
    {
        AfxMessageBox(_T("OLE初始化出错!"));
        return FALSE;
    }

5、切换到managetestDlg.cpp,在步骤2中的按钮控件的回调函数中添加一下代码。

_ConnectionPtr m_pConnection;//ConnectionPtr指针用于打开、关闭一个库连接或用它的Execute方法来执行一个不返回结果的命令语句
    _RecordsetPtr m_pRecordset;//_RecordsetPtr智能指针,可以用来打开库内数据表,并可以对表内的记录、字段等进行各种操作
    CString csSQLstr;
    CString bookid;
    CString bookname;
     csSQLstr ="SELECT * FROM test";//test 为步骤一种数据库新建的表名。
    try                 
    {
        m_pConnection.CreateInstance(__uuidof(Connection));//创建ADO连接
        m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Database1.accdb","","",adModeUnknown);   
        //将数据库文件放在与代码文件相同的目录下,data source的赋值即可写成上面语句中的形式,

//具体provider 与 data source的值可参考http://blog.csdn.net/u012388338/article/details/39393105
    }
    catch(_com_error e)
    {
        AfxMessageBox(_T("数据库连接失败,确认数据库db.mdb是否在当前路径下!"));
        return;
    }
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    try
    {
        m_pRecordset->Open((_bstr_t)csSQLstr,m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText);

//打开一个记录集(test表),通过这个记录我们可以进行查询,插入,删除等操作。

}
    catch(_com_error *e)
    {
        AfxMessageBox(e->ErrorMessage());
    }
    bookid=m_pRecordset->GetCollect("BookID");

//得到test表中BookID的第一个值,这是由于打开数据集后,指针在这个记录集的开头,

//可以通过movefist,movelast,movenext操作移动指针位置,getcollect可以读取记录集中的信息。
    bookname = m_pRecordset->GetCollect("BookName");
    SetDlgItemText(IDC_BookID,bookid); //将得到的信息显示在文本框中
    SetDlgItemText(IDC_BookName,bookname);
    m_pRecordset->Close();//关闭记录集
    m_pRecordset = NULL;
    m_pConnection->Close();//断开数据库连接
    m_pConnection= NULL;

6、运行,点击显示,得到结果

7、说明

本文只是简单介绍了下mfc与access的连接及简单操作。对于其中有些东西的解释不是很完整,也没有能力解释,望见谅。

参考:

除文中提到的两篇外,

http://blog.csdn.net/chaoguodong/article/details/7663877 mfc连接access数据库 ,介绍了ADO的概念,添加库的说明及ADO的操作代码

http://blog.sina.com.cn/s/blog_6da8e3ef0101fzyo.html   ADO操作ACCESS数据库的一些心得

http://www.csdn123.com/html/itweb/20130826/81725_81723_81707.htm  MFC利用ADO连接ACCESS数据库及其操作数据库的方法,展示了插入,删除等操作的详细代码

vs2012 MFC连接及操作access(2007)数据库(ADO)相关推荐

  1. arcgis打开mdb数据库_操作方法:在 ArcGIS 中连接至 Microsoft Access 2007 / 2010 (ACCDB) 文件...

    操作方法:在 ArcGIS 中连接至 Microsoft Access 2007 / 2010 (ACCDB) 文件 摘要 Microsoft Office 2007 引入了一种新的 Microsof ...

  2. Access.2007数据库开发全书(奋斗的小鸟)_PDF 电子书

    中文名: Access2007数据库开发全书 作者: 王樵民 图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 清华大学出版社 书号: 9787302184638 发行时间: 2008年 ...

  3. 通过OleDB连接方式,访问Access,Excel数据库.

    通过OleDB连接方式,访问Access,Excel数据库. OleDbConnectionStringBuilder oleConStr = new OleDbConnectionStringBui ...

  4. access数据库中怎么添加计算机,如何在Access 2007数据库中添加附件 -电脑资料

    Access允许您在数据库表中包含附件, 1. 首先使用Access 2007打开Access数据库. 2. 在"设计视图"中打开您想要添加附件的表. 3. 在"字段名称 ...

  5. Excel VBA通过ADO连接、操作SQL Server数据库的自定义函数

    网上大多数有关VBA连接.操作SQL Server数据库的教程,大多是把连接字串.SQL语句.执行过程全写在一个过程中了,当一个VBA项目需要做大量的查询.更新数据时,显然这种方法并不合适,以下代码是 ...

  6. access tempvars 宏_Access数据库教程之使用常用对象来加快Access 2007数据库三

    xin3721网络学院为广大学员,准备了丰富了教学视频.相关视频教程地址为:access教程 这是你找出你最常用的表单和报表所需要的所有东西.然后如果你需要加快一些表单和报表,那么集中于那些最常被使用 ...

  7. python 在window 系统 连接并操作远程 oracle 数据库

    1,python 连接 oracle 需要 oracle 自身的客户端  instantclient,可以去官网下载自己需要的版本, https://www.oracle.com/technetwor ...

  8. 网上商城连接mysql_操作网上商城数据库与数据表

    一. mySQL中gbk和utf8的区别 在MySQL中,如果数据库只需要支持一般中文,数据量很大,性能要求也比较高,那么就最好选择GBK,因为相对于UTF-8而言,GBK占用的空间较小,每个汉字只占 ...

  9. asp连接oracle6,asp下用OracleInProcServer完成对Oracle的连接和操作-ASP教程,数据库相关...

    < % response.charset="gb2312" tblname=request("tb") dim objorasession,objorad ...

最新文章

  1. 相关性分析p值_一行代码掌握皮尔逊相关分析,洞察变量关系
  2. js添加菜单栏之后停留在那里
  3. static在内存层面的作用_「C++ Primer plus 心得」9.内存模型和名称空间
  4. 网络营销外包——网络营销外包专员如何做好网站锚文本优化?
  5. kali安装步骤失败 选择并安装软件_Pycharm2019.3.3软件安装步骤
  6. python连接oracle导出数据文件
  7. python packages_Python-Packages
  8. 1/3 常用符号:类型说明符
  9. 多线程锁--怎么理解Condition
  10. Hello RoboCupRescue(RCR)
  11. 厉害了!这款百度炼丹神器绝了!
  12. KingDZ 变菜鸟,每日一个C#小实例之---C#MessageBox小技巧
  13. 《Java核心技术》读后感(JAVA 小虚竹)
  14. RestTemplate请求oauth获取token报401错误
  15. 2022微软苏州Software Engineer校招暑期实习生一面
  16. matlab 量化投资策略,【策略分享】Matlab量化交易策略源码分享
  17. Python400集大型视频,无偿分享,从正确方向学习python,全套python入门完整视频
  18. LTE物理信道PHICH--学习笔记
  19. 模型的偏差、方差分析
  20. kaggle之识别谷歌街景图片中的字母

热门文章

  1. a24.ansible 生产实战案例 -- 基于kubeadm安装kubernetes v1.20 -- 集群部署(一)
  2. 错别字,你能找出几个?
  3. 【2018慢性病与信息大会】吴良友:信息化背景下慢性病监测工作变革
  4. pyqt5 源码 eric 记录
  5. 解决蓝奏网盘无法正常下载
  6. HTML5游戏开发–第10课
  7. dz论坛连接mysql数据库_DISCUZ! 修改数据库连接文件配置方法
  8. php获取公众号微信用户信息
  9. 松果出行 x StarRocks:实时数仓新范式的实践之路
  10. 3dsMax 修改为中文