• 一篇文章掌握C++操作Access数据库


    一、可视化工具

    我们都知道oracle数据库的可视化工具有:PLSQL Developer、navicat(支持包括oracle的大部分数据库)等,Access数据库的可视化工具是:Microsoft Access,我们安装好微软的office就会自带Microsoft Access,下面提供navicat和Microsoft Office的下载链接,都是破解版的,自带破解软件:

    navicat下载地址:https://pan.baidu.com/s/1zZndNll-dcCr5mLbh_MGYA  提取码:1234

    Microsoft Access下载地址:https://pan.baidu.com/s/1Rfsbs4U3cZqVgxecb6KwYQ   提取码:1234

    为了更好所见即所得的操作Access数据库,我们安装上面的Microsoft Access数据库。

    二、安装Access数据库驱动 

    如果你的程序是32位的,需要安装32位的Access数据库驱动,如果你的程序是64位的,需要安装64位的数据库驱动。如何判断自己的程序是32位还是64位,我们只需要看一下"配置管理器"里面"平台"是Win32还是X64,如下图则程序是32位的:

    下面提供Access驱动的下载地址,包括32位和64位两个版本:

    https://pan.baidu.com/s/1UbO6ABrKSsSJ78i3_xE1aA    提取码:1234

    三、数据库连接字符串

    在使用C++操作数据库 增删改查 之前,首先要连接上数据库,这里我们使用ADO来连接,连接字符串很重要,通过驱动类型来确定连接字符串的格式,我们可以通过:控制面板--管理工具--ODBC数据源(分为32位和64位)来进行查看驱动类型:

    (1)用32位的数据源管理程序查看32位驱动的类型,如下图:

    连接字符串格式为:zzc1.mdb要换成你自己的数据库文件

    _bstr_t StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\zzc1.mdb"

    (2)用64位的数据源管理程序查看64位驱动的类型,如下图:

     连接字符串格式为:zzc1.mdb要换成你自己的数据库文件

    _bstr_t StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\zzc1.mdb;Persist Security Info=False;";

    四、使用简单的查询操作进行测试

    1、使用Microsoft Access可视化工具创建一个简单的表:

    2、测试代码:

    1. // access_test.cpp : 定义控制台应用程序的入口点。
    2. //
    3. #include "stdafx.h"
    4. #include <string>
    5. using namespace std;
    6. #import "C:\Program Files\Common Files\System\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile")
    7. using namespace ADOCG;
    8. _ConnectionPtr m_pConnection;
    9. _RecordsetPtr m_pRecordset;
    10. int _tmain(int argc, _TCHAR* argv[])
    11. {
    12. CoInitialize(NULL);
    13. m_pConnection.CreateInstance(__uuidof(Connection));
    14. //_bstr_t StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\zzc1.mdb";
    15. _bstr_t StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\zzc1.mdb;Persist Security Info=False;";
    16. try {
    17. m_pConnection->Open(StrConn, "", "", adModeUnknown);
    18. }
    19. catch (_com_error &e)
    20. {
    21. _bstr_t str = e.Source();
    22. str = e.Description();
    23. }
    24. printf("数据库连接成功\r\n");
    25. m_pRecordset.CreateInstance(__uuidof(Recordset));
    26. m_pRecordset->Open("select * from student", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adModeUnknown);
    27. _variant_t var;
    28. int curItem = 0;
    29. int id;
    30. string name;
    31. bool man = false;
    32. while (!m_pRecordset->GetEndOfFile())
    33. {
    34. var = m_pRecordset->GetCollect(_T("name"));
    35. if (var.vt != NULL)
    36. name = _bstr_t(var);
    37. var = m_pRecordset->GetCollect(_T("id"));
    38. if (var.vt != NULL)
    39. id = atoi(_bstr_t(var));
    40. var = m_pRecordset->GetCollect(_T("isman"));
    41. if (var.vt != NULL)
    42. man = var.boolVal;
    43. printf("id=%d,name=%s, man = %d\r\n",id, name.c_str(), man);
    44. m_pRecordset->MoveNext();
    45. curItem++;
    46. }
    47. system("pause");
    48. return 0;
    49. }

     

  • 相关阅读:
    【Vue 组件化开发 二 】注册组件的语法糖、组件模板的分离写法、组件的数据
    服务端请求伪造(SSRF)及漏洞复现
    Angular 中declarations,imports,providers,exports的用法?
    react antdesign table 添加滚动加载(下拉翻页功能)
    @RestController 注解网页返回 [] ,出现的bug
    现场直击|亚数TrustAsia精彩亮相IOTE深圳物联网展,CSA联盟展台等你来!
    【C++进阶】特殊类设计
    find 与 cp 命令组合使用
    Linus Torvalds:最庆幸的是 30 年后,Linux 不是一个“死”项目
    Java中有哪些方式能实现锁某个变量
  • 原文地址:https://blog.csdn.net/u012372584/article/details/133959131