c# - 如何在没有 oracle 客户端或 tnsname 的情况下连接到 ORACLE DB

标签 c# oracle console-application tnsnames dbconnection

有什么方法可以在不安装 oracle 客户端或不使用 tnsname 的情况下连接到 Oracle DB?该应用程序需要部署在客户端机器上,因此希望它是独立的。

最佳答案

为了澄清我的评论,这可以通过 Oracle 的托管 ODP.net 实现,它不需要客户端计算机安装任何 Oracle 客户端/驱动程序。它非常适合您无法控制安装在目标计算机上的软件的 Windows 或控制台应用程序。

要下载托管客户端,您可以使用库包管理器 (https://www.nuget.org/packages/odp.net.managed/) 从 nuget 获取它:

PM> Install-Package odp.net.managed

关于 TNSnames(因为它也是客户端依赖项),如果您使用 Oracle 的 EZ Connect,则可以完全绕过 TNSnames。为此,您只需将数据源格式化为 server-name:port/sid。实际上,自从 TNSnames 可用以来,我就完全停止使用它了。

这是一个示例,说明如何使用 Managed ODP.net 执行此操作:

OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder();
sb.DataSource = "MyOracle.MyCompany.com:1521/MySid"; // EZ Connect -- no TNS Names!
sb.UserID = "luke";
sb.Password = "Jedi4Eva";

OracleConnection conn = new OracleConnection(sb.ToString());
conn.Open();

OracleCommand cmd = new OracleCommand("select * from dual", conn);
object o = cmd.ExecuteScalar();

conn.Close();

关于c# - 如何在没有 oracle 客户端或 tnsname 的情况下连接到 ORACLE DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33519071/

相关文章:

c# - 部分类可以访问 C# 中的静态方法吗?

database - WHENEVER SQLERROR EXIT FAILURE 在 sqlplus 中抛出错误后的评论部分

c# - 缺少 Visual Studio 2017 控制台项目模板

c# - 有没有办法以编程方式使控制台窗口在任务栏中闪烁

c++ - 调试/发布中的控制台程序

c# - PostSharp 方面解析类型

c# - 包括过滤器子集合

c# - 使用 FileStream 在 C# 中打开文件

Oracle 获取前一天的记录

sql - PL/SQL 触发器问题