这是错误ORA-12154:TNS:无法解析指定的连接标识符?

时间:2013-12-03 20:46:21

标签: 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.ExecuteReader();
while (dr.Read())
{ messageBox.Show(dr[0].Tostring()); } 

两个项目中的代码相同,

project1“WinForm”中的

工作正常

项目2中的

“Excel 2007 addins”出现以下错误:

  

ORA-12154:TNS:无法解析指定的连接标识符

我正在使用C#.net 2010,office 2007,windows8,oracle 10g。

准备手动连接数据库时,如图所示

Visual Studio,打开“查看”菜单+“服务器资源管理器”。

右键单击数据连接+添加连接+选择Oracle数据库 服务器名称:localhost或我的机器名称,设置用户名&密码并单击“测试连接”,测试成功。enter image description here

3 个答案:

答案 0 :(得分:26)

ORA-12154:TNS:无法解析指定的连接标识符?

如果未定义TNS,您也可以尝试这个:

如果您使用的是C#.net 2010或其他版本的VS和oracle 10g快速版或更低版本,并且您创建了这样的连接字符串:

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:could not resolve the connect identifier specified,然后首先必须重新启动系统并运行项目。

如果您的Windows是64位,那么您安装oracle 11g 32位,如果您安装11g 64位,那么您使用Oracle Developer Tools for Visual Studio版本11.2.0.1.2安装Oracle 11g Oracle数据访问组件(ODAC)或稍后来自OTN并在Oracle Universal Installer中进行检查 请确保选中以下内容:

Oracle Data Provider for .NET 2.0

Oracle Providers for ASP.NET

Oracle Developer Tools for Visual Studio

Oracle Instant Client 

然后重新启动你的vs然后运行你的项目.... 注意: - 解决此类错误需要系统重启.......

答案 1 :(得分:6)

数据库必须有一个名称(例如DB1),试试这个:

OracleConnection con = new OracleConnection("data source=DB1;user id=fastecit;password=fastecit"); 

如果未定义TNS,您也可以尝试这个:

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"); 

答案 2 :(得分:0)

在命令提示符下运行以下命令

tnsping数据源

这应该给出如下响应

C:> tnsping *******

适用于*** Windows的TNS Ping实用程序:版本***-在*****上生产

版权所有(c)1997、2014,Oracle。保留所有权利。

使用的参数文件: c:\ oracle *****

使用****解析别名 尝试联系(描述=(地址列表=(地址=(协议= TCP)(主机= )(端口= ))))(connect_data =(服务器= )(服务名称= )(故障转移模式=(类型= )(方法= )(重试= )(延迟= ))))** 确定(****毫秒)

在开头添加文本“ Datasource =”,在末尾添加凭据。 最后的字符串应该是

数据源=(描述=(地址列表=(地址=(协议= TCP))(主机= )(端口= ))) )(connect_data = {server = )(service_name = )(failover_mode = {type = )(method = )(retries = )(delay = )))));用户ID = ;密码= ; **

使用它作为连接字符串来连接到oracle db。