我是甲骨文的新手。尝试将 C# windows 应用程序连接到 Oracle 数据库,但似乎无法建立正确的连接。不断收到异常:“ORA-12514: TNS:listener 目前不知道连接描述符中请求的服务”。我必须在连接字符串中指定端口、服务名称和数据库名称,因为服务 ID 可以访问多个数据库。我知道字符串中的值是有效的(有效的服务器、有效的 serviceid、有效的用户名、密码等),因为我有一个第三方工具,它能够使用来自向导的相同参数进行连接。我尝试了很多不同的方法来格式化连接字符串,但我总是得到相同的 12514 错误。在代码示例中,您将看到三种格式(cxn、cxn2 和 cxn3),我已经尝试了每种格式,但都得到了相同的错误。
string cxn = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyServerName)(PORT=MyPortNumber))" +
"(CONNECT_DATA=(SERVICE_NAME=MyServiceId)));User Id=MyUserName; Password=MyPassword;";
string cxn2 = "DATA SOURCE=MyServerName:MyPortNumber/MyUserName;" +
"PERSIST SECURITY INFO=True;USER ID=MyUserName; password=MyPassword; Pooling = False;";
string cxn3 = "DATA SOURCE=MyServerName:MyPortNumber/MyServiceId;" +
"PERSIST SECURITY INFO=True;USER ID=MyUserName; password=MyPassword; Pooling = False;";
using (OracleConnection conn = new OracleConnection(cxn3))
{
string sqlSelect = "SELECT * FROM PERSONS";
using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
{
var table = new DataTable();
da.Fill(table);
if (table.Rows.Count > 1)
Console.WriteLine("Successfully read oracle.");
}
}
同样,我在第三方工具的向导中使用了 MyServiceId,我连接得很好并选择了我的数据库。我正在使用 Oracle.ManagedDataAccess.Client。我在网上查阅了许多文章,包括Oracle 在“ODP.NET 入门,托管驱动程序”一节中的指导。如何让驱动程序识别有效的服务 ID,然后接受数据库名称?任何指导表示赞赏。谢谢。