【发布时间】:2020-05-26 23:53:51
【问题描述】:
我正在尝试将 Oracle 数据库连接到我的 C# 项目,但出现以下错误:
ORA-12514 TNS:listener 目前不知道在 连接描述符
截图:
我在 Sql Developer 中用相同的值进行了测试,结果是成功的:
唯一的区别是我使用的是 SID 而不是服务名称,所以我尝试创建两个不同的连接字符串来测试它使用 SID 和不使用它,但仍然无法连接:
string dt = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <IP>)(PORT = 1521))(CONNECT_DATA = (SID = DB2DEV))); User Id = OMP; Password = <PW>; ";
OracleConnection conn = new OracleConnection(dt1);
if (conn.State != ConnectionState.Open)
{
labelteste.Text = "Not Opened";
}
else
{
labelteste.Text = "Open";
}
我使用上面的if 条件来验证连接是否打开,它总是返回Not Opened。
有人知道为什么会这样吗?
【问题讨论】:
-
“我使用上面的 if 条件来验证连接是否打开,并且它总是返回 Not Opened。”) ...这与您的连接字符串无关。这很简单,因为你还没有打开它。只是创建一个 OracleConnection 对象不会自动打开连接,它只是设置对象。你必须自己打电话给
conn.Open();。此外,通常最好使用using块来确保您的对象在使用后得到正确处理。请参阅docs.microsoft.com/en-us/dotnet/api/… 的示例 -
SQL Developer 是基于 Java 的,使用与 .NET 中的连接完全不同的 JDBC 驱动程序。使用连接向导也不同于自己编写connectionString。