问题记录:MFC使用ADO在32位和64位下分别连接ACCESS数据库碰到的问题

题外话:近期收到个任务,给合作的公司弄一个静态库,库的功能需要加载文件夹中的ACCESS数据库,合作方希望同时有32位的 和 64位的。

进入正题把,首先声明,我的ACCESS数据库文件后缀是.mdb的

在x86下导入msado15.dll,我是这样写的

#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace \
rename("EOF","adoEOF") rename("DataTypeEnum","adoDataTypeEnum") \
rename("FieldAttributeEnum", "adoFielAttributeEnum") rename("EditModeEnum", "adoEditModeEnum") \
rename("LockTypeEnum", "adoLockTypeEnum") rename("RecordStatusEnum", "adoRecordStatusEnum") \
rename("ParameterDirectionEnum", "adoParameterDirectionEnum")

我按网上说的#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") 这样写编译出好多错误

然后在x64下导入msado15.dll,如下

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

然后重点就是打开数据库的操作,就是这里折腾了好久,网上搜到的有说是Provider=Microsoft.Jet.OLEDB.4.0这种是打开.mdb的;Provider=Microsoft.ACE.OLEDB.12.0这种是打开.accdb的,但是我发现行不通

实际的操作如下所示:

#if defined _WIN64//如果是64位程序
			strConnect.Format(L"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;", strPath); // 
#elif defined _WIN32//如果是32位程序
			strConnect.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;", strPath);  //
#endif	

x64下打开.mdb数据库也是用的Provider=Microsoft.ACE.OLEDB.12.0;

对了,在执行打开数据库操作前还有重要的步骤要做,就是安装对应的ACCESS环境,

x86下安装

AccessDatabaseEngine.exe

x64下安装

AccessDatabaseEngine_X64.exe

具体的资源网上搜把,我上传显示资源已存在了

切记!!!!  x86下就对应x86的环境,,,x64下对应x64的环境,,不能搞乱了,不然打开数据库会报错

成功打开数据库之后的SQL操作这里不再赘述了

        记录下:2022 10 10文章来源地址https://uudwc.com/A/z965

阅读剩余 0%

原文地址:https://blog.csdn.net/qq_40115755/article/details/127248809

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年06月14日 13:52
element-ui 多选框和级联选择的部分bug以及解决方法
下一篇 2023年06月14日 13:53