Access在win7可以连接成功,但是在win10连接失败,检查了不是代码的问题,发现是在win10数据源里面,没有Access数据库驱动的问题.
try{ CoInitialize(NULL); m_pConnection = _ConnectionPtr(__uuidof(Connection)); m_pConnection->ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Database1.accdb;"; m_pConnection->Open("", "", "", adConnectUnspecified); } catch (_com_error e){ AfxMessageBox(_T("数据库连接失败!")); return FALSE; }
Provider=Microsoft.ACE.OLEDB.12.0; 这个提供者的名称,在数据源上面找不到,添加驱动那一页没有指定这个Access2010版本的数据库驱动。
解决问题:
1.下载相应版本的驱动:http://dl.pconline.com.cn/download/1059640-1.html
并且安装这个驱动(注意我这里是Access2010版本的,其他不同的下载相应的版本)
注意安装前:先打开数据源(在C:\Windows\SysWOW64\odbcad32.exe),选择“驱动程序”那一栏,查看一些关于Access的驱动名称,后面安装你想要的驱动后,这一栏会多出现一条Aceess驱动名称,后面步骤添加这个就可以了。
2.不要直接在电脑->属性->管理工具添加,而是在C:\Windows\SysWOW64里,找到这个文件odbcad32.exe,然后点击打开它。在“系统DSN”中,“添加”驱动名称,并与代码中Provider=Microsoft.ACE.OLEDB.12.0;这个名称保持相同。如图:
然后确定,在执行代码,就可以连接数据成功了。