[ODBC]读Excel时报错:外部数据库驱动程序(1)中的意外错误解决方案

在MFC下通过ODBC访问Excel数据时遇到错误,该错误由Windows安全更新触发。解决方法包括:1. 卸载特定的安全更新;2. 修改注册表,替换旧版msexcl40.dll;3. 安装Access Database Engine 2010 Redistributable,更新连接字符串为使用Microsoft.ACE.OLEDB.12.0提供程序。

在MFC下使用ODBC读取Excel数据库,之前用着还好好的,突然就用不了了,几经查找发现是Windows安全更新的补丁搞的鬼。

出现错误:
ODBC ERROR


解决方案:
1. 在控制面板——卸载——已安装更新,找到并删除以下安全更新:

SystemPatch NumUninstall Command
Windows 7 、Windows Server 2008 R2KB4041681wusa /uninstall /kb:4041681
Windows 8 、Windows Server 2012KB4041693wusa /uninstall /kb:4041693
Windows 10 V1607 、 Windows Server 2016KB4041691wusa /uninstall /kb:4041691
Windows 10 V1703KB4041676wusa /uninstall /kb:4041676

或者以管理员权限运行cmd,并执行wusa /uninstall命令卸载,然后重启即可。
这里写图片描述

2. 修改注册表(非专业人员慎用)
- 找到老版本的(4.0.9801.0) msexcl40.dll
- 复制到另一个目录(比如:C:\ProgramData\JET_Fix\msexcl40.dll)
- 将HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel\win32的值修改成C:\ProgramData\JET_Fix\msexcl40.dll
JetFix

3. 安装新的数据库引擎AccessDatabaseEngine
安装Microsoft Access Database Engine 2010 Redistributable并使用新的provider连接

将连接串
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.xls;Extended Properties=”Excel 8.0”;
改为
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\test.xls;Extended Properties=”Excel 8.0”;


参考:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/55b1d633-b715-491e-917e-b7cb01ae0523/error-in-windows-update-kb4041681-unexpected-error-from-external-database-driver-1?forum=sqldataaccess

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值