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

محم*_*يمي 12 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()); } 
Run Code Online (Sandbox Code Playgroud)

两个项目中的代码相同,

在project1"WinForm"工作正常

在project2"Excel 2007插件"出现以下错误:

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

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

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

Visual Studio,打开View菜单+ Server Explorer.

右键单击数据连接+添加连接+选择Oracle数据库服务器名称:localhost或我的机器名称,设置用户名和密码,然后单击测试连接,测试没有成功.在此输入图像描述

小智 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"; 
Run Code Online (Sandbox Code Playgroud)

之后您会收到错误消息,ORA-12154: TNS:could not resolve the connect identifier specified然后首先必须重新启动系统并运行项目.

如果您的Windows是64位,那么您安装oracle 11g 32位,如果您安装11g 64位,那么您使用Oracle开发人员工具从Visual Studio版本11.2.0.1.2或更高版本安装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 
Run Code Online (Sandbox Code Playgroud)

并重新启动你的vs然后运行你的项目....注意: - 系统重新启动是必要的解决这种类型的错误.......


Wer*_*eit 6

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

OracleConnection con = new OracleConnection("data source=DB1;user id=fastecit;password=fastecit"); 
Run Code Online (Sandbox Code Playgroud)

如果未定义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"); 
Run Code Online (Sandbox Code Playgroud)