题外话:近期收到个任务,给合作的公司弄一个静态库,库的功能需要加载文件夹中的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操作这里不再赘述了文章来源:https://www.toymoban.com/news/detail-774396.html
记录下:2022 10 10文章来源地址https://www.toymoban.com/news/detail-774396.html
到了这里,关于问题记录:MFC使用ADO在32位和64位下分别连接ACCESS数据库碰到的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!