我有这段代码:
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或我的机器名称,设置用户名&密码并单击“测试连接”,测试成功。
答案 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。