Oracle数据库可以';t在C#中连接,错误为ORA-12514
我试图将Oracle数据库连接到我的C#项目,但出现以下错误: ORA-12514 TNS:侦听器当前不知道中请求的服务 连接描述符 截图: 我在Sql Developer中使用相同的值进行了测试,结果成功: 唯一的区别是我使用的是SID而不是服务名称,因此我尝试创建两个不同的连接字符串来测试它是否有SID,但仍然无法连接:Oracle数据库可以';t在C#中连接,错误为ORA-12514,c#,oracle,ado.net,C#,Oracle,Ado.net,我试图将Oracle数据库连接到我的C#项目,但出现以下错误: ORA-12514 TNS:侦听器当前不知道中请求的服务 连接描述符 截图: 我在Sql Developer中使用相同的值进行了测试,结果成功: 唯一的区别是我使用的是SID而不是服务名称,因此我尝试创建两个不同的连接字符串来测试它是否有SID,但仍然无法连接: string dt = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <IP&
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";
}
string dt=“数据源=(描述=(地址=(协议=TCP)(主机=)(端口=1521))(连接数据=(SID=DB2DEV));用户Id=OMP;密码=;”;
OracleConnection conn=新的OracleConnection(dt1);
如果(连接状态!=连接状态打开)
{
labelteste.Text=“未打开”;
}
其他的
{
labelteste.Text=“打开”;
}
我使用上面的if
条件来验证连接是否已打开,并且它总是返回notopened
有人知道为什么会发生这种情况吗?SID和服务名称完全不同。在DB服务器上,使用“lsnrctl status”命令或“lsnrctl services”获取数据库所有已注册服务名称的列表,然后使用连接字符串中的其中一个名称。SID和服务名称完全不同。在DB服务器上,使用“lsnrctl status”命令或“lsnrctl services”获取数据库所有已注册服务名称的列表,然后使用连接字符串中的其中一个名称。“我使用上面的if条件验证连接是否已打开,并且它始终返回未打开。”)…这与连接字符串无关。很简单,因为你还没打开。仅仅创建OracleConnection对象并不会自动打开连接,它只是设置对象。您必须调用
conn.Open()代码>你自己。此外,通常最好使用using
块,以确保使用后物品得到正确处置。请参阅SQLDeveloper上的示例,它是基于Java的,并使用JDBC驱动程序,这与.NET中的连接完全不同。使用连接向导也不同于自己编写连接字符串。请参阅:“我使用上面的if条件来验证连接是否已打开,并且它始终返回Not Open。”)…这与连接字符串无关。很简单,因为你还没打开。仅仅创建OracleConnection对象并不会自动打开连接,它只是设置对象。您必须调用conn.Open()代码>你自己。此外,通常最好使用using
块,以确保使用后物品得到正确处置。请参阅SQLDeveloper上的示例,它是基于Java的,并使用JDBC驱动程序,这与.NET中的连接完全不同。使用连接向导也不同于自己编写连接字符串。请参阅: