win8_64bit系统下利用ODBC连接自建数据源时的问题与解决

背景:

由于用Labwindows/CVI做上位机开发的时候要用到访问数据库的功能,而CVI自带的SQL Toolkit Library提供的方法是基于ODBC的,所以尝试为其配置ODBC来访问Access数据库

平台:

  Labwindows/CVI 2010,应该是32位版的

  win8 64bit 企业版

  Microsoft Access 2013(64位)

我的步骤:

1.建立数据源。利用Access自建一个数据源(table),保存为“.mdb”格式;

2.代码实现连接并访问数据源。利用CVI的SQL Toolkit Library提供的标准方法来完成,即依次调用DBConnect()->DBBeginMap()->DBMapColumnTo*()->Feching function...(各函数的参数省略,*代表若干可选项),具体实现可参考CVI的SQL Toolkit Help文档;

3.在操作系统中注册数据源。由于Windows采用ODBC的方式为应用程序提供统一的数据库访问接口,屏蔽不同数据库之间的差异,因此在使用基于某一种数据库创建的数据源之前,必须在ODBC数据源管理器中进行注册(即添加)。

问题与解决过程:

主要问题出现在第三步中,下面开始详细讨论。

首先在win8的搜索框中输入“ODBC”,打开ODBC数据源管理器(ODBC Data Source Administrator),这里要注意,以这种方式打开的数据源管理器是64位的(可以看到管理器的标题栏上有个括号里面写着 64位,如下图)。另外说明一下,我的win8一开始安装的是32位的office2010,因此此时在64位的ODBC管理器中找不到“Microsoft Access Driver”(点击“添加”后,列表中没有),因此也就无法注册我们自建的“.mdb”文件。

(当时在网上搜到可以打开C:\Windows\SysWOW64\odbcad32.exe这个32位的ODBC管理器完成注册,但我没有尝试,所以无法确定是否可以用32位的ODBC管理器在64位系统中找到32位的数据库驱动)

接下来我就卸载了32位的office,并安装了64位版的office2013。然后依然打开64位的ODBC管理器,在“系统DSN”选项卡下点击“添加”,终于看到了“Microsoft Access Driver“。

用该”Microsoft Access Driver“顺利地添加了我自建的Access数据源,如下图所示”CVI mytest“,可以看到该数据源的”平台“一项显示”64位“。 回到CVI开发环境中编译运行程序,结果出乎意料的又报错了: 错误提示是”驱动程序与应用程序之间的体系结构不匹配“,分析原因可能是我的CVI是32位的,而我创建的数据源使用的是64位的驱动,因此造成了体系结构不匹配。于是想到了位于C:\Windows\SysWOW64\odbcad32.exe下的32位ODBC管理器,若在该管理器下为数据源注册32位的驱动或许就可以了。 打开32位ODBC管理器(注意标题栏显示32位),如下图: 在“系统DSN”选项卡下点击“添加”,可以看到”Microsoft Access Driver“: (比较32位管理器和64位管理器下的Driver,可以发现,它们的版本号和动态链接库都不一样,如下图所示) 继续完成创建,可以看到我所创建的”CVImydatabase“的”平台“已经变成了32位: 回到CVI中,将程序链接的数据源改成”CVImydatabase“,运行成功,说明这种方法确实建立上了数据库的链接。 总结: 在64位操作系统下编程进行数据库访问时,应用程序与数据库驱动程序的体系结构应该要匹配,若安装的数据库(仅以Access为例)是64位的,则应该在32位的ODBC管理器下注册数据源,这样加载的才是32位的驱动程序。 若安装的数据库是32位的,在64位的ODBC管理器下是找不到对应的驱动的,在32位的ODBC管理器下是否能找到驱动,若能找到注册数据源后能否成功实现链接,这两个问题由于我没有测试,所以现在还不能确定。

转载于:https://www.cnblogs.com/marcworld/p/3412230.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值