【问题标题】:Trouble connecting to Oracle with c#使用 c# 连接到 Oracle 时遇到问题
【发布时间】:2025-11-25 07:40:01
【问题描述】:

我无法连接到在 VM(在我的本地计算机上)上运行的 Oracle 11g XE 实例。 我正在尝试使用 c# 连接到它:

using System.Data.OracleClient;
OracleConnection conn = new OracleConnection("User Id=system;Password=mypassword;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.102)(PORT=1521))(CONNECT_DATA=(SID=UDW))););
    oc.Open();

我得到的错误是:

System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.

这是指向 Oracle 还是指向 DLL 的版本?甲骨文高于8。

【问题讨论】:

    标签: c# oracle database-connection


    【解决方案1】:

    要正确执行此操作,您需要安装 Oracle 客户端并使用将安装在 ODP.net 目录下的该客户端目录中的 Oracle.DataAccess.Dll。尽管微软提供了 OleDb(不推荐使用)和System.Data.OracleClient,但这是连接到 Oracle 的推荐方式。 Microsoft 建议使用提供商本机数据连接。 Oracle 为 x86 和 x64 提供了两种客户端。使用 ODP.net 可以进行 Oracle 优化。

    【讨论】:

    • 我按照建议下载并添加了 Oracle.DataAccess.dll 作为参考。从我的代码中,我现在只是得到一个 Oracle 超时,并且从 Visual Studio Server Explorer 中它仍然显示“System.Data.OracleClient 需要 Oracle 客户端软件版本 8.1.7 或更高版本。”。还有其他想法吗?
    • 不知何故,您需要删除对 System.Data.OracleClient 的所有引用。可能是在 .config 文件中。您必须创建一个连接字符串,对吗?同时,您想将 Oracle.DataAccess.Dll 复制到您的依赖项 bin 中,depends,从那里获取所有引用,不要直接从 Oracle 安装文件夹中引用。
    • 谢谢!!超时是由 Oracle 服务器上的防火墙引起的。
    【解决方案2】:

    您似乎需要更新客户端计算机上的 oracle 客户端库。 下载Oracle downloads

    【讨论】:

    最近更新 更多