【问题标题】:How to connect to ORACLE DB without oracle client or tnsname如何在没有 oracle 客户端或 tnsname 的情况下连接到 ORACLE DB
【发布时间】:2016-02-04 18:47:50
【问题描述】:

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

【问题讨论】:

  • 我不会说这是不可能的,但是每个人都让安装程序来执行这种类型的部署,您不想安装依赖项的任何特定原因?
  • 使用 Oracle 的 Managed ODP.net。它消除了对本地客户端的依赖,但不利的一面是,您无法访问 OCI 的许多高级功能,例如批量插入和更新

标签: c# oracle console-application tnsnames dbconnection


【解决方案1】:

为了澄清我的评论,这可以通过 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 可用以来,我就完全停止使用它了。

以下是如何使用托管 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多