【问题标题】:System.Data.OracleClient not working with 64 bit Oracle ClientSystem.Data.OracleClient 不适用于 64 位 Oracle 客户端
【发布时间】:2014-08-05 21:07:18
【问题描述】:

我设计了一个 C# 应用程序来连接到 Oracle 数据库并更改模式用户密码。我的参考程序集是 System.Data.OracleClient 的位置:“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Data.OracleClient.dll”

我用来设计/测试应用程序的平台如下所示: 1. 64位Windows 7平台。 2. 32位.Net Frameworkv4.5 3. 32位Oracle 10g客户端。

我也需要这个应用程序为 64 位 Oracle 客户端运行。但是,当我将二进制文件传输到安装了 64 位 Oracle 11g 的机器上时,我收到此错误:“尝试加载 Oracle 客户端库引发 BadImageFormatException。在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。”

我不确定如何解决此问题。请建议我是否需要进行任何代码更改或程序集参考。我阅读了很多类似的论坛,但找不到任何有用的东西。请帮忙!

【问题讨论】:

  • 您需要 64 位库。见:stackoverflow.com/q/8433803/92837
  • 这样可以让我成功连接到 32 位 Oracle DB 吗?
  • 是的,应该这样做。
  • 所以首先,我应该安装 64 位 .Net 框架来获取 64 位库?
  • 您需要上面链接中提到的 64 位 ODP.net 库。

标签: c# .net oracle oracle11g oracle10g


【解决方案1】:

首先,提供者System.Data.OracleClient 已被弃用。 Microsoft 不再支持它,您应该考虑使用 Oracle 提供程序 Oracle.DataAccessOracle.ManagedDataAccess

我的建议是在您的开发机器上安装 32 位和 64 位 Oracle 客户端,然后您可以测试和构建任何东西。以下是如何执行此操作的说明:Install x86 and x64 Oracle Client on one machine

x86 Oracle 客户端可以连接 64 位 Oracle 数据库,反之亦然。

【讨论】:

  • devArt 的 dotConnect for Oracle 也可以使用。它要花钱,但它没有客户端依赖项(上次我使用 Oracle 的 ODP.net,如果客户端没有安装 Oracle 客户端,它会呕吐),它也适用于实体框架。
  • Provider Oracle.ManagedDataAccess 也不需要安装任何 Oracle 客户端。但是,它最近在 12c 中发布,仍然存在一些错误。
【解决方案2】:

我在 Windows 10 电脑上遇到了同样的问题。我将项目从旧计算机复制到新计算机,均为 64 位,并在新计算机上安装了 64 位 Oracle 客户端。我得到了同样的错误信息,但是在尝试了很多没有效果的解决方案之后,真正对我有用的是:

在您的 Visual Studio(我的是 2017 年)中转到

工具 > 选项 > 项目和解决方案 > Web 项目

在该页面上,选中以下选项:将 IIS Express 的 64 位版本用于网站和项目

【讨论】:

    【解决方案3】:

    试试这个:

    1. 打开 Oracle 网络配置助手
    2. 在本地网络服务名称配置中选择单选按钮选项,然后单击下一步
    3. 在重新配置中选择单选按钮选项,然后单击下一步
    4. 选择要重新配置的网络服务名称,ORACLR_CONNECTION_DATA 或 ORCL,然后单击下一步
    5. 输入你的服务名称,如果你安装的oracle的服务名称为ORCL,则在字段中写入ORCL,然后点击下一步
    6. 选择你要使用的协议,例如选择TCP,然后点击下一步
    7. 输入你的oracle数据库引擎(服务)安装的主机名,例如,安装在你的台式机或笔记本上, 然后填写为 localhost,并填写您的端口号(选择选项使用标准端口号 1521)或者如果使用其他端口,请填写端口号 然后点击下一步。
    8. 选择是执行测试, 如有必要,更改用户登录 然后点击下一步
    9. 如果没有配置其他网络服务名称,选择否,然后点击下一步

    如果您想从 MS Visual Studio 连接到 .net 框架,您应该下载、解压并安装 ODTwithODAC183.zip 和 BuildTools_Full.exe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      相关资源
      最近更新 更多