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

标签 c# .net oracle connection-string tnsnames

我正在尝试连接到远程 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;";

我遇到错误说 - “错误 [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)
    )
  )

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

最佳答案

首先使用 nuget packet manager 安装 odp.net.managed :

 Install-Package odp.net.managed

odp.net.managed 在没有预装 Oracle Client 的情况下工作

下一步:

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();

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

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

或者如果 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();

关于c# - 无法从 C#.net 应用程序连接到 oracle 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22247915/

相关文章:

sql - Oracle SQL - 使用合并函数

c# - 将字符串转换为十进制? (可为空的十进制)通过扩展方法

c# 带参数的http post 数据并保存到mysql

c# - 将 HtmlDocument.DomDocument 转换为字符串

.net - 关于 System.OperatingSystem 类的问题

c# - 在执行时更改 Gecko Webbrowser 中的代理设置?

c# - 类的属性

.net - 内部连接以获取不在表中的那些

oracle - Oracle数据库的开发架构

sql - 返回显式游标的SQL语句