【问题标题】:Is ODAC must for C# Oracle Database connectivity using ODP.netODAC 是否必须使用 ODP.net 进行 C# Oracle 数据库连接
【发布时间】:2015-02-18 12:45:57
【问题描述】:

我是数据库和 .net 的新手!

我安装了 SQL developer 3.0,通过它我可以连接到 Oracle 11g 数据库服务器。

要求是编写一个C#程序连接oracle数据库并运行查询;在我的 Visual Studio 2013 项目中,我添加了对 Oracle.DataAccess.Client 的引用并编写了代码,但是在调试时出现错误,显示“Ora-12541:TNS:No-Listener”。

我现在的问题是,我是否需要安装 Oracle 客户端(64 位 ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64 ?),我的假设是 SQL 开发人员会解决这个问题!

请帮忙!

【问题讨论】:

  • 如果连接性是主要问题,而不是任何设计时功能,只需使用 NuGet 包。根本不需要安装客户端或驱动程序。

标签: c# oracle odp.net odac


【解决方案1】:

SQL Developer 有自己的 Oracle 驱动程序(据我所知是 JDBC),因此您必须安装 Oracle 客户端才能连接到 Visual Studio 中的 Oracle DB。

注意,“ODAC”仅包含 ODP.NET 数据提供程序(即主要是 Oracle.DataAccess.dll 文件)。为了使用它,您必须安装实际的 Oracle 客户端 - 至少是 Instant Client(它也包含在 ODAC 下载文件中)。

考虑使用 ODP.NET 托管驱动程序,那么您只需要一个 DLL,不需要其他任何东西。它可以从 Oracle 页面64-bit Oracle Data Access Components (ODAC) Downloads 下载,适用于 32 位和 64 位应用程序。

【讨论】:

  • 所有具有 .net 提供程序的 oracle ODAC 软件包都包含某些版本的必需客户端。
  • 我会支持您使用托管驱动程序的建议。通过 .NET 使用 Oracle 是一件非常痛苦的事情。特别是,但不仅是,如果您尝试将它与实体框架一起使用。如果您单击我的名字并查看我以前的问题,您会看到我问了几个问题,这些问题显示了 ODAC 和 ODP.NET 的常见问题。
【解决方案2】:

除非您从另一台机器复制 Oracle.DataAccess.dll,否则所有包含它的 oracle 软件包也包含某些版本的客户端。 ODAC 包括完整版本,而 xcopy 安装具有即时客户端。为了简单起见,我还将指向托管提供程序,因为它没有任何非托管依赖项,

但是,如果您一直遇到“ora-xxxxx”错误,则表明您的 Oracle 客户端安装正确。您现在唯一的问题是您的连接字符串。如果您通常在 Sql Developer 中使用 TNS 名称,那么您需要将现有的 tnsnames.ora 复制到新 oracle 主目录中的 network/admin 中,或者您需要设置一个 TNS_ADMIN 系统环境变量以指向您现有的环境变量。还有其他选项,但在这种情况下您的错误是特定于 tns 的。

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多