【问题标题】:Connect Oracle DB using 64 bit Oracle Client from 32 bit process使用 64 位 Oracle 客户端从 32 位进程连接 Oracle DB
【发布时间】:2012-08-27 15:51:36
【问题描述】:

我的应用程序在 32 位模式下运行。它尝试使用 Oracle 客户端连接 oracle DB。 Oracle 客户端以 64 位运行。

string connectionString = @"Data Source=" + oracleDBName + ";User id=" + oracleDBUserId +";Password=" + oracleDBPwd +";";
            OracleConnection con = new OracleConnection(connectionString);
            try
            {
                con.Open();
                if (con != null)
                {
                    con.Open();
                }
                return true;
            }
            catch (OracleException)
            {
                return false;
            }

我在调用时遇到 targetinvocationexception

con.Open();

原因,由于应用程序在 32 位模式下运行,因此无法加载 64 位 dll。

我无法更改应用程序模式。我也无法安装 32 位 Oracle 客户端。如何解决这个问题

提前致谢

【问题讨论】:

  • 32 位进程需要 32 位 Oracle 客户端 (OCI),64 位进程需要 64 位 Oracle 客户端,别无他法。
  • 你不能改变应用模式,你不能安装32位客户端,你不能写你的应用程序。

标签: c# oracle operating-system oracleclient


【解决方案1】:

.NET 的 Oracle 驱动程序“需要来自 Oracle 的本机”客户端。 (存在瘦客户端的不是 Java)

试试即时客户端,它不需要安装。 http://www.oracle.com/technetwork/topics/winsoft-085727.html

此外,您可以尝试使用 ODBC .NET 驱动程序,但将 ODBC DSN 配置为使用 Microsoft 的 Oracle 驱动程序(大多数 Windows 安装程序都有 Microsoft 的 odbc 驱动程序用于 oracle 开箱即用)。 再次:
1) 对于 32 位应用程序,您需要 32 位版本的 ODBC
2) oracle 即时客户端应该在搜索路径中可用

在 Windows 64 位中,有两个版本的 ODBC 管理面板用于 32 位和 64 位应用程序。要运行 32b 版本,请执行 C:\Windows\SysWOW64\odbcad32.exe。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2022-06-17
    相关资源
    最近更新 更多