ODAC 是否必须使用 ODP.net 进行 C# Oracle 数据库连接

Is ODAC must for C# Oracle Database connectivity using ODP.net

我是数据库和 .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 开发者会处理这件事的!

请帮忙!

SQL 开发人员拥有自己的 Oracle 驱动程序(据我所知 JDBC),因此您必须安装 Oracle 客户端才能连接到 Visual Studio 中的 Oracle 数据库。

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

考虑使用 ODP.NET Managed Driver,那么你只需要一个 DLL,没有别的。它可以从 Oracle 页面 64-bit Oracle Data Access Components (ODAC) Downloads 下载,适用于 32 位和 64 位应用程序。

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

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