使用C-VS2005中的Oracle数据库

使用C-VS2005中的Oracle数据库,oracle,Oracle,服务器上安装的Oracle是10.2.0.3 Enterprise Edition 64位10g ODAC在Windows 2008 x64计算机上显示的版本为10.2.0.2.20 在上述计算机的测试环境中运行应用程序时遇到的错误为 The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. 我尝试使用.Net Oracle名称空间,并使用来自 C:\Windows\Micr

服务器上安装的Oracle是10.2.0.3 Enterprise Edition 64位10g

ODAC在Windows 2008 x64计算机上显示的版本为10.2.0.2.20

在上述计算机的测试环境中运行应用程序时遇到的错误为

The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception.
我尝试使用.Net Oracle名称空间,并使用来自 C:\Windows\Microsoft.NET\Framework64\v2.0.50727

错误:

Oracle client libraries threw BadImageFormatException.  This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
有人碰到过这样的问题吗


另外,在Windows 2008 x64计算机上使用的正确Oracle客户端/ODAC是什么?任何人都有链接吗?

您似乎已经安装了32位Oracle客户端,或者您必须有一个32 dll屏蔽您的64位客户端。您需要安装64位客户端,以便应用程序可以访问64位dll。在路径中查找oci*.dll

此外,请查看hklm\software\oracle下的注册表,查看您有多少“家”


最后,如果客户机上有toad,请查看“连接”对话框中的主选择器。它将以红色显示不完整或不工作的主页。

但是如果我从我的C:\Windows\Microsoft.NET\Framework64\v2.0.50727访问x64,我应该得到System.Data.oracleclient.dll的x64,对吗?\u home1,\u home2,_home4是我在注册表中看到的,每个home都对应于以前的安装,并且在该密钥下必须有一个相关文件夹。可能其中一个是以前的32位安装,它仍然在您的路径中。要确保加载了什么DLL,请使用sysinternals套件,例如process explorer或filemon。这是路径值:E:\oracle\product\10.2.0\client\u 1\bin;E:\oracle\product\10.2.0\client\u 2\bin;E:\oracle\product\10.2.0\client\u 4\bin;E:\oracle\product\10.2.0\client\u 3\bin;然后需要检查E:\oracle\product\10.2.0\client\u 1\bin中的oci DLL是32位还是64位。将VisualStudio dumpbin工具用于此dumpbin/header oci.dll等。我认为有一个64位版本的OracleClient作为.net 3.5服务包的一部分提供,但是如果您仍然使用.net 2.0 vs 2005,它可能对您没有用。有关更多详细信息,请参阅