最近,在一个项目中使用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!
本篇博客为转载,原帖地址:http://m.blog.csdn.net/blog/u010891996/12522911