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 服务器
首先使用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)