无法从 C#.net 应用程序连接到 Oracle 服务器

Sha*_*lem 4 .net c# oracle tnsnames connection-string

我正在尝试连接到远程 Oracle 服务器。我的连接字符串 -

OdbcConnection con = new OdbcConnection();
con.ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= xxxx)(PORT=xxxxx))(CONNECT_DATA=(SERVER=dedicated)(SERVICE_NAME=abc.domain.com)));USER ID=user1;Password=pwd;";
Run Code Online (Sandbox Code Playgroud)

我遇到错误:“错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序”(System.Data.Odbc.OdbcException) 异常消息 =“错误 [IM002] [Microsoft][ ODBC 驱动程序管理器]未找到数据源名称且未指定默认驱动程序“,异常类型 =”System.Data.Odbc.OdbcException”,异常 WinRT 数据 =“”

我根据我的 TNSNAMES.ora 指定了我的连接字符串

我的数据库在 TNSNAMES.ora 中的条目如下:

DB.WORLD=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST= xxxx)
      (PORT=xxxxx)
    )
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=abc.domain.com)
    )
  )
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这个错误吗?请帮助/建议我的连接字符串是否出错以及如何从我的 Windows 应用程序连接到 Oracle 服务器

arn*_*tdv 5

首先使用nuget 数据包管理器安装 odp.net.driven :

 Install-Package odp.net.managed
Run Code Online (Sandbox Code Playgroud)

odp.net. 托管工作无需预装 Oracle 客户端

下一个:

const string connectionString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= xxxx)(PORT=xxxxx))(CONNECT_DATA=(SERVER=dedicated)(SERVICE_NAME=abc.domain.com)));USER  ID=user1;Password=pwd;";
var connection = new OracleConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)

如果应用程序文件夹中有 tnsnames.ora:

const string connectionString = @"Data Source=DB.WORLD;USER  ID=user1;Password=pwd;";
var connection = new OracleConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)

或者如果 tnsnames.ora 在其他文件夹中:

Environment.SetEnvironmentVariable("TNS_ADMIN", @"path_to_tnsadmin.ora");
const string connectionString = @"Data Source=DB.WORLD;USER  ID=user1;Password=pwd;";
var connection = new OracleConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)