ODBC特点、通信环境配置以及获取CDataBase异常问题(解决“在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配”问题)

    最近实验室项目需要借助ODBC通信,实现本地接口向远端数据库插入数据的功能实现过程当中解决了一些问题,现在将整个过程总结为以下三个部分:使用数据源ODBC的原因,配置ODBC数据源的方式(解决在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配),打印连接ODBC数据源失败的信息。

    软件环境:接口端--win7 64位旗舰版系统+ VS2010写的C ++程序接口;数据库端--win7 64位数据库+ Oracle数据库(64位)+ mysql(64位)。

一,使用数据源ODBC的原因

   ODBC即OPEN DATABASE CONNECITON的缩写,意为开放数据库连接。为了便于访问数据,WINDOWS系统提供了ODBC数据源管理工具,该工具用于设置数据源的名字DSN(DATA SOURCE NAME)。所谓DSN只不过是一个数据源的标志,设置它的目的是便于应用程序访问数据,也就是说,只要为某个数据库设置了相应的DSN,应用程序就不必理会该数据库存储的位置和驱动程序,可以按DSN直接访问数据库。  

    配置ODBC数据源是为了软件接口和数据库的完美通信,如此实现的好处如下:

    1)接口程序开发人员无需知道数据库所在的位置(即IP地址)。正式的数据库和应用服务器应该是单独的人员管理,而不是开发人员.ODBC数据源中可以直接存储,修改远端数据库(或者说是服务器)的IP,接口程序的开发人员只需调用ODBC相关的函数即可实现通信(比如C ++提供了CDatabase类,其中的Open():OpenEx()函数可以实现借助ODBC的数据库通信,调用即可,参考链接https://blog.csdn.net/wj3319/article/details/6862388)

    2)ODBC可以直接修改数据库名DSN,户名UID,密码PSW以及数据库的IP地址等信息,可以避免在数据库密码等信息维护后接口程序的修改,程序开发人员也不需要知道正式的密码。

    3)多个接口程序可以到一个数据源那里获取连接。

    。目前的数据源都是基于数据库连接池技术的,通过连接池连接数据库效率更高连接池有关的知识如下:

http://baike.baidu.com/link?url=BTsngDU3VzxxGbvm8BtGFMt7zN-7huzbhO0mnu9JCsfRSWpjcqZpw5EBiblahMKs9rCqFbZOw3rLKgsqUbr6R_

二,配置ODBC数据源的方式

    1,安装Oeacle ODBC驱动

   1)首先明白ODBC驱动有32位,64位之分。如果设置不对,会出现“在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配”这样的问题。区分安装完成之后的驱动是32位,还是64位驱动的方法如下:

    ODBC数据源管理器有两个:“ 64位版的位置:C:\ windows \ system32 \ odbcad32.exe ”(如果直接从设备管理器进入的也是64位的)和“ 32位版的位置:C :\ windows \ sysWOW64 \ odbcad32.exe “(这里文件夹名和软件的位数拧着呢,不知为什么)。查看”驱动程序“64位驱动信息只会出现在64版本的ODBC数据源管理器中,32位驱动信息只会出现在32版的ODBC数据源管理器中。


   2)安装驱动。这里强烈推荐在数据库端的的电脑接口状语从句:程序所在电脑安装32位的Oracle ODBC驱动(即是是64位的电脑,64位的ORCALE,不要问为什么,笔者也不知道原值,但是只有这种情况下才可以使用,这是用3天血与泪的教训中总结出来的真理

  32位Oracle ODBC驱动安装包及安装教程地址:https://download.csdn.net/download/dashumak/10421614(压缩包中是xp下的安装方法,win7下的安装方法见https://blog.csdn.net/dashumak/article/details/80408980):

    64位Oracle ODBC驱动安装包地址(安装方式很简单,找到odbc_install.exe右键管理员方式运行即可):https://download.csdn.net/download/dashumak/10421608

    还有需要注意一下:这两个都是在没有安装过Oracle的电脑上安装的驱动,如果安装过Oracle的电脑是有相应的驱动的,但是也要检查一下驱动的版本(好像32位的Oracle装的是32位的驱动,64位的甲骨文装的是64位的驱动)。

    3)配置ODBC数据源

    接口程序所在电脑和数据库所在电脑都需要配置ODBC数据源,配置界面如下图所示。其中Data Source Name是数据库名称,Description可以不写,TNS Service Name是数据库所在的位置(比如数据库所在电脑写“ ORCL“,接口所在电脑就是”数据库IP / ORCL“),用户名是用户名,可以点击”Test Connection“测试配置环境有没有成功。

    

接口所在电脑ODBC环境


数据库所在电脑ODBC环境配置



测试成功后的弹窗


三,打印连接ODBC数据源失败的信息

    借助赶上函数可以获得ODBC通信失败的原因,实例如下


倘若通信出现"no listener"的问题,请参考:https://blog.csdn.net/dashumak/article/details/80492064

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dashumak/article/details/80347532
个人分类: 技巧 C++ 解决VS
上一篇如何设置虚拟网卡(增加网络适配器)
下一篇Oracle ODBC 32位驱动安装及详细配置(不需安装客户端)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭