C# 这是错误ORA-12154:TNS:无法解析指定的连接标识符?
我有以下代码:C# 这是错误ORA-12154:TNS:无法解析指定的连接标识符?,c#,oracle,excel-addins,C#,Oracle,Excel Addins,我有以下代码: OracleConnection con = new OracleConnection("data source=localhost;user id=fastecit;password=fastecit"); con.Open(); string sql="Select userId from tblusers"; OracleCommand cmd = new OracleCommand(sql, con); OracleDataReader dr = cmd.Exe
OracleConnection con = new OracleConnection("data source=localhost;user id=fastecit;password=fastecit");
con.Open(); string sql="Select userId from tblusers";
OracleCommand cmd = new OracleCommand(sql, con);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{ messageBox.Show(dr[0].Tostring()); }
两个项目中的代码相同
在project1中,WinForm工作正常
在project2 Excel 2007加载项中出现以下错误:
ORA-12154:TNS:无法解析指定的连接标识符
我正在使用C.net 2010、office 2007、windows8、oracle 10g
准备手动连接到数据库时,如图所示
Visual Studio,打开“视图”菜单+服务器资源管理器
右键单击数据连接+添加连接+选择Oracle数据库
服务器名称:localhost或我的计算机名称,设置用户名和密码并单击测试连接,测试不成功。数据库必须有一个名称示例DB1,请尝试此名称:
OracleConnection con = new OracleConnection("data source=DB1;user id=fastecit;password=fastecit");
OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DB1)));
User Id=fastecit;Password=fastecit");
如果未定义TNS,您也可以尝试以下方法:
OracleConnection con = new OracleConnection("data source=DB1;user id=fastecit;password=fastecit");
OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DB1)));
User Id=fastecit;Password=fastecit");
ORA-12154:TNS:无法解析指定的连接标识符
如果未定义TNS,您也可以尝试以下方法:
OracleConnection con = new OracleConnection("data source=DB1;user id=fastecit;password=fastecit");
OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DB1)));
User Id=fastecit;Password=fastecit");
如果您使用的是C.net 2010或其他版本的VS和oracle 10g express edition或更低版本,并且您创建的连接字符串如下所示:
static string constr = @"Data Source=(DESCRIPTION=
(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=yourhostname )(PORT=1521)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));
User Id=system ;Password=yourpasswrd";
之后,您会收到错误消息ORA-12154:TNS:无法解析指定的连接标识符,然后首先必须重新启动系统并运行项目
如果您的windows为64位,则需要安装oracle 11g 32位;如果您安装了11g 64位,则需要使用oracle Developer Tools for Visual Studio 11.2.0.1.2或更高版本从OTN安装oracle 11g oracle数据访问组件ODAC,并在oracle Universal Installer中进行检查
请确保已检查以下各项:
Oracle Data Provider for .NET 2.0
Oracle Providers for ASP.NET
Oracle Developer Tools for Visual Studio
Oracle Instant Client
然后重新启动Visual Studio,然后运行项目。。。。
注意:-系统重新启动是解决此类错误所必需的……在命令提示符下运行以下命令 tnsping数据源 这将给出如下的响应 C:>tnsping******* 适用于***Windows的TNS Ping实用程序:版本***-上的生产***** 版权c 1997年,2014年,甲骨文。版权所有 使用的参数文件: c:\oracle***** 用于****解析别名 正在尝试联系描述=地址\u列表=地址=协议=TCHOST=端口=连接\u数据=服务器=服务\u名称=故障转移\u模式=类型=方法=重试次数=延迟=** OK****毫秒 在开头添加文本“Datasource=”,在结尾添加凭据。 最后一个字符串应该是 数据源=描述=地址\列表=地址=协议=TCHOST=端口=连接\数据=服务器=服务\名称=故障转移\模式=类型=方法=重试次数=延迟=;用户Id=;密码=**
使用此字符串作为连接到oracle db的连接字符串。您不需要在某个位置指定数据库名称吗?是的,我无法指定在Project1 winForms和同一台计算机上使用相同代码的某个数据库,但它在另一个project Excel 2007 addinsIs Project1或project2 64位中不起作用?PATH环境变量中是否有多个Oracle Home?project1 winForms Platform=x86,output type=WindoseApplaciton.Project2 Platform=active any cpu,output type Class Library我没有DB1,我使用了案例2错误ORA-06413:连接未打开C:\oraclexe\app\Oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.ORA,XE=DESCRIPTION=ADDRESS=PROTOCOL=TCPHOST=pcmaxPORT=1521 CONNECT\u DATA=SERVER=DEDICATED SERVICE\u NAME=XE我希望您能帮助我@wernfried当它是这样的:OracleConnection con=new OracleConnectiondata source=XE;用户id=fastecit;密码=fastecit;ORA-12514:TNS:侦听器目前不知道连接描述符中请求的服务是我现在得到的错误。谢谢。。直接使用连接字符串中的描述可以解决此问题…您必须重新启动什么?客户机还是服务器?通常你只需要重新启动一些特定的服务就可以解决重新启动的问题。这很有效,你救了我一天,谢谢!如果没有,请尝试将主机dns名称更改为IP地址。重新启动客户端计算机使其适合我。在此之前,我甚至无法从ODBC工具测试连接。谢谢