vs2012通过ADO连接Access2013(x64)

来源:互联网 发布:歌曲网络一线牵 编辑:程序博客网 时间:2024/05/20 04:10

  最近,在一个项目中使用vs2012连接Access2013数据库时发生了错误,无法连接上,特把解决方法写出来,希望能帮到有需要的人。

  先介绍一下我的环境,系统:window8(x64),vs2012,Access2013(x64),使用的技术MFC+ADO。

  连接代码:

try{m_pConnection.CreateInstance(__uuidof(Connection));//"ADODB.Connection"m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=PatientInformation.accdb;Persist Security Info=False","","",adModeUnknown);}catch(_com_error& e){ CString errormessage; errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());         AfxMessageBox(errormessage);//显示错误信息         return FALSE;}

   在连接时,提示错误代码为0x800A0E7A,通过百度获知此错误为ADO找不到指定的提供者 ,是数据库连接或配置出错了。我重新下载了Access2010的引擎,32位的无法安装,64位的安装成功。但依然还是这个错误。有网友也表示,在64位系统下,如果安装的是32位的Access能连接成功,但64位的Access就无法连接。网上解释说,在用vs开发32位应用程序时,会调用32位Ado库和32位的access引擎,但本机安装了64位Access后,引擎为64,且无法同时安装32位与64位Access或引擎。

   难道得卸载64位office安装32位吗?这太折腾了。

  几经寻找,终于获得解决方法。

   原文(英语)连接:http://blog.codefluententities.com/2011/01/20/microsoft-access-database-engine-2010-redistributable/

   我简要介绍一下步骤:

   1、去M$官网上下载Access2013引擎(32位的)链接:http://www.microsoft.com/zh-CN/download/details.aspx?id=13255,点下载会让你选择,选择AccessDatabaseEngine.exe,这是32位的。

  2、用管理员权限启动CMD,转到你下载的路径,然后执行命令:AccessDatabaseEngine.exe /passive,带上这个/passive选项就会强制安装。安装过程和安装结束都不会有提示。

  3、试一下您的代码,现在应该能连接了,如果您没遇上其他提示或错误。

  enjoy it!