c# oracle数据库 ORA-12154: TNS: 无法解析指定的连接标识符

首先我先描述一下我的问题:

我是用的vs2008开发的C#程序,win7 64位系统,我的系统中装有64 位oracle 11g的数据库和32为的client端。

如果不知道为什么这么装,先看本段落,如果知道,直接看下一段。pl/sql因为是为32位oracle程序开发的,故不支持64位数据库,下载client安装,或者直接装instant client也可以,在pl/sql 工具->首选项->连接中的oracle主目录和oracle OCI库改为client端的目录和OCI所在的路径,pl/sql就可以正常工作了。用服务端配置连接名时很爱出错,我一般用client端的net configuration assist配置连接名,所以装了client,而不是instant client。

我的配置文件tnsname.ora使用client配置的,pl/sql连接正常,tnsping也能ping通,sql plus连接也正常。但是在连接数据库时报告ORA-12154: TNS: 无法解析指定的连接标识符。在网上找了几篇文章没有解决,后来想起了OCI的不兼容问题,编写的64位程序调用32位OCI程序应该会出现问题,于是找到Debug解决方案平台,把我的程序的目标平台改为X86,也就是32位程序,程序通过。


贴出测试代码:DataSource为配置的服务命名


OracleConnection conn = new OracleConnection("DataSource=orcl_localhost;User ID=PSIDP;Password=PSIDP");//Data Source后面跟你数据库的名字,User ID为用户名,Password为密码            
            conn.Open();
            string sql = "insert into users(name,pwd) values(:name,:pwd)";
            OracleCommand cmd = new OracleCommand(sql, conn);
            OracleParameter parn = new OracleParameter(":name", name);
            cmd.Parameters.Add(parn);
            OracleParameter parp = new OracleParameter(":pwd", name);
            cmd.Parameters.Add(parp);
            //int result = cmd.ExecuteNonQuery();//result接收受影响行数,也就是说result大于0的话表示添加成功
            int result = cmd.ExecuteNonQuery();
            conn.Close(); cmd.Dispose();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值