C#连接ORACLE数据库

摘自:http://blog.163.com/xzl-810925/blog/static/589996520089962939597/

 

<add key="ConnStr_TaibsDB" value="Data Source=BANK_192.1.10.7;User ID=GE2;Password=PASSWORD"  />
  

<!--add key="ConnStr_TaibsDB" value="SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.1.10.7)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=bank)));uid=ge2;pwd=password;"  /-->
  

主要是使用OracleClient连接数据库导致的一些错误:

1、System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

原因:
Oracle 9i Release 2 客户端在安装到Windows的NTFS分区下时的安全认证设置不正确,引起本机的Authenticated Users用户无法看到ORACLE_HOME目录下的内容; 这导致在ASP.NET以Authenticated Users权限使用System.Data.OracleClient连接Oracle数据库时报出以上错误。

解决办法:
找到ORACLE_HOME文件夹(我的是d:/oracle/ora92),点右键,选属性--安全,在组或用户栏中选“Authenticated Users”,在下面权限列表中增加的修改权限,"应用";再去掉刚增加的权限,点击应用;选权限框下面的“高级”按钮,确认“Authenticated Users”后面的应用于是“该文件夹、子文件夹及文件”,按确定把

权限的更改应用于该文件夹;

----遇到这种问题一般重装一遍Oracle Client。

2、OCIEnvNlsCreate 失败,返回代码为 -1,但错误消息文本不可用

原因:环境句柄(OCIEnv)创建时失败,网上搜了下,OCIEnv的创建函数OCIEnvCreate() 或 OCIEnvNlsCreate()。这样问题就类似于"Could not create an environment: OCIEnvCreate returned -1"(网上该问题的原因认为是对oracle目前设置足够的权限)

解决办法:
给该机的oracle的安装目录设置:
IUSR_<你的机器名>(Internet来宾帐户),IWAM_<你的机器名>(启动IIS进程帐户)设置这两个用户的权限为“完全控制”就可以了,后来考虑到这样权限给的太大了,遂删掉之,还原为最开始的权限设置情况,重连IIS,竟然没问题。还在茫然中:((显然该方法没解决根本问题,不管了)。

(该方法可用,我的环境是:Win2003 + IIS6 + Oracle 10 + VS2005)

以下 是我本人处理的情况 在Oracle 安装目录下面 的安全 将 Authenticated Users 这个用户删掉,然后在添加此用户,权限完全控制,就可以了,这个是Oracle9i的一个bug

 

3、ORA-12154: TNS: 无法处理服务名(未试过)

网上对该问题的解决方案太多了,不过我机器情况不一样吧,用控制台添加数据库到树,设置网络服务名跟web.config中的Data Source一致,OK了。

最后说一下我的环境:

Oracle9.2i,Windws 2003 Server(SP1),.net 2.0

----先用Oracle的工具SQL Plus测试一下本地服务名,看看监听什么的都启动没有。

 

 备注带参数命名

           OracleParameter[] param = new OracleParameter[1];
            param[0] = new OracleParameter(":sid", OracleType.NVarChar);
            param[0].Value = sid;
            string selSql = "select ID,SUBCLASS_NAME from B_SERVICE_SUBCLASS where PARENT_ID=:sid";

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值