Running in 64 bit mode with the 32 bit Oracle client installed问题

在连接Oracle数据库的时候,很容易遇到的一个问题就是32位与64位驱动的问题。在32位的机器上,一切都是32位的,这个不复杂。但是现在一般WIN7的系是64位的,而64位的机器上是可以安装32位与64位驱动的。


如果做的是WinForm程序,连接Oracle数据库,可以使用Oracle自己的DLL,Oracle.DataAcess,也可以使用微软自带的System.Data.OracleClient。但是使用这两天的前提都是,必须在机器上安装Oracle的Client驱动,这里的驱动分为32位的与64位的。而Oracle.DataAcess也分为32位与64位的,这前后两者一定要一致。


说一说最近遇到的问题。最近在做一个Website的项目,注意还不是Web Application,只是一个WebSite项目,直接发布到IIS中。这里只是用了微软的ystem.Data.OracleClient项目的build模式是any cpu,如下图所示。


Running in 64 bit mode with the 32 bit Oracle client installed问题_第1张图片

因为VS自带的卡西尼服务器只有32位模式,所以Any CPU模式的程序运行起来也就只有是32的。这时候报出一个异常running in 64 bit mode with the 32 bit Oracle client installed. 我原来一直以为,这个问题在于我的System.Data.OracleClient的32或者64的版本不对,做了很多变动都没有找出原因。后来我明白了,这里的32 bit Oracle client installed指的是dll,而并不是指Oracle官网上下载来的驱动。因为此时我的机器上只是安装了Oralce的64位的驱动,而现在这个程序是32位的,去连接64位驱动的时候就报出了这个异常。当我安装了32位的Oracle驱动的时候,这个问题就解决了。

在安装的时候也遇到了一个小问题,因为我以前已经安装了64位的驱动,已经在机器中有一个Oracle的app目录了,此时再安装的时候,我们可以把32位的驱动安装到自定义的目录app2中。也就是说,现在机器上同时安装了32位与64位的Oracle Client驱动。程序会根据自身的X86或者X64模式去连接相应的驱动,进而远程连接到Oracle数据库。注意,这里所说的安装Oracle Client的驱动,是dll所在的那个机器,也就是程序运行的那个机器,而不是Oracle Server所在的机器。从本质上说,是Oracle Client与Oracle Server在网络上进行数据传输。





你可能感兴趣的:(常见异常处理)