如何在没有oracle客户端或tnsname

时间:2015-11-04 10:12:52

标签: c# oracle console-application tnsnames dbconnection

有没有办法连接到Oracle DB而无需安装oracle客户端或使用tnsname?应用程序需要部署在客户端计算机上,因此希望它是独立的。

1 个答案:

答案 0 :(得分:2)

为了澄清我的评论,可以使用Oracle的Managed 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();