破解ODBC数据源管理器(64位)添加系统DNS不可见问题!

 

大家在开发过程中是否遇到过使用ODBC来操作Access数据库却运行失败的问题,今天小编按照MSDN文档指导,编写了一个简单的demo来测试一下,帮助大家解决运行过程中的报错问题。

01

添加数据源

这个解决办法据说是要在ODBC数据源管理器的系统DNS中添加一个数据源,下面进行添加,具体步骤如下:
在Windows工具中看见两个数据源,分别是32位与64位:
现在32位的东西都快绝迹了,所以想当然打开64位的,结果悲剧开始了。
打开后添加一个Access的数据源:
如图,什么数据源也没有:
于是再添加一次,结果显示已经存在:
但是,小编在Access中发现了自己创建的这些数据源:

02

添加32位数据源

小编在尝试使用64位数据源管理器无果后,转而选用了32位的数据源管理器,结果竟然成功了:
但在运行时还是在  connection.Open();这行代码上报错了:
继续找原因时小编被一个大哥的代码解救了,他没遇到上面那些问题,只是看见他的demo的连接字符串上多了一个Dns=xxx;。
按照他的做法在连接字符串上加了个Dns=AAA;代码成功运行,为什么MSDN的示例里面没有加这个。
但是刚才ODBC64位管理器添加系统DNS的问题还不清楚失败原因,首先小编怀疑是驱动的问题:既然是64位数据源管理器出问题了就重新下载了64位驱动。
https://www.microsoft.com/zh-cn/download/details.aspx?id=54920
下载后安装,真相大白了:安装了32位数据源就不能再安装64位数据源。

03

经验总结

小编的ODBC的Access驱动是32位的(这是因为之前在安装Office时误点了32位的exe),当小编尝试使用64位程序进行创建时,显然是不对的,但ODBC64位数据源管理器并未给出任何明确的提示或警告,让人非常困惑。
更令人费解的是,尽管创建过程似乎顺利完成了,但新创建的数据源并未显示在列表中,而在Access中却能看到其存在。这种软件行为令人摸不清头脑,让人难以找到问题的真正根源。
小编尝试在浏览器中搜索相关问题,但搜索结果并未给出清晰的解释,有些答案甚至只是碰巧解决了问题,并没有提供真正的解决方案。
其实到这里问题还没有完全解决,小编写这篇文章时想复现的错误也不报错了。
之后,去掉Dns=AAA;后照样能跑通。
通常来说,只要程序能够正常运行就可以,但是有时候就要有点不求甚解的态度,说不定下次就知道了原因,死磕容易伤害灵魂~
而在使用ODBC时,选择正确的驱动版本——到底是64位还是32位——是至关重要的。因为许多数据库都提供了ODBC驱动支持,对于微软而言,这无疑是一个亟待解决的问题。
最后,希望大家都不要遇到这种类似的问题。

原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/35792.html

(0)
速盾高防cdn's avatar速盾高防cdn
上一篇 2024年4月26日 下午10:36
下一篇 2024年4月26日 下午10:40

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注