我想从C#连接到Oracle数据库,但我不能因为ORA-12545:连接因为目标主机或对象不存在而失败,因此我怎么能这样?
C# code
string strConn = "Data Source =(DESCRIPTION =" +
"(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521))" +
"(CONNECT_DATA =" +
" (SERVER = DEDICATED)" +
"(SERVICE_NAME = XE)" +
")" +
");User Id =system;password=bluesky;";
OracleConnection conn = new OracleConnection(strConn);
conn.Open();
conn.Close();
listener.ora
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server)(PROGRAM = extproc))(SID_DESC =(SID_NAME = CLRExtProc)(ORACLE_HOME) = C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server)(PROGRAM = extproc)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521))))DEFAULT_SERVICE_LISTENER =(XE)tnsnames.ora XE =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XE)))EXTPROC_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)))(CONNECT_DATA =(SID = PLSExtProc) (PRESENTATION = RO)))ORACLR_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)))(CONNECT_DATA =(SID = CLRExtProc)(PRESENTATION = RO)))
1 回答
错误
这意味着您有连接字符串问题,再次检查所有访问数据,机器名称并尝试使用此连接字符串,您忘记添加"ADDRESS_LIST",在此处检查doc. .
使用
ODP.NET
而不是tnsnames.ora
,应该是这样的所以你的连接字符串应该是这样的