c# System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本

  前几天遇到了这个问题,情景是与oracle数据库连接的时候出现的。本机已经安装了客户端,使用toad数据库工具能够与数据库相连进行相关的操作。但是在使用代码进行连接的时候出现了这样的问题。找了好久,都没有找到原因,终于是我的一个同事找到了,他直接将代码中的某一段注释掉了,结果程序就能运行了,实在是佩服。但是我们都不太了解其中的原因,所以我决定还是一探究竟。

  先在网络上找了好多这个问题的解答,但是都没有能符合我们这个情景的,所以您遇到的问题可能是跟我们遇到的问题是一样的,但又可能是不一样的哟。如果遇到了相同的问题,我很高兴能够帮到您。

  好了废话不多说了,先来一解决问题的总结吧。遇到这样的问题您暂时可以这样做,

  1.查看编译环境是否符合,及平台设置,一般改为X86即可(这是我另一个同事的电脑问题,也出现了这样的问题,改了就好了)

  2.查看代码中是否有类似这样的代码(c#):

  string oraclePath = System.Windows.Forms.Application.StartupPath;
     Environment.SetEnvironmentVariable("PATH",oraclePath,EnvironmentVariableTarget.Process);

  这个代码需要注释掉或者看我后面的做法。

  3.重装客户端,查看是否解决问题(这个是可能环境变量PATH没有配置好)

  4.其他暂时还没有发现

  整个问题我的解决方法:如果有什么不对的,请各位一定要指出来,谢谢。

说明:下面的方法是建立在我们知道了应该是下面这个话出现问题的基础上的。

1、问题分析

在执行Environment.SetEnvironmentVariable("PATH", oraclePath, EnvironmentVariableTarget.Process);这句之前环境变量PATH的值为如下:

C:\oraclexe\app\oracle\product\10.2.0\server\bin;
C:\oracle\product\10.2.0\client_1\bin;
c:\Oracle\Ora81\bin;
C:\Program Files\Oracle\jre\1.1.7\bin;
C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
C:\Program Files\Common Files\Autodesk Shared\;
C:\Program Files\Microsoft SQL Server\90\Tools\binn\

执行上面的语句后,环境变量PATH的值就为

E:\words\示例代码\周工作汇报客户DCClient—CS\workCollector\bin\Debug

少了上面所有的值。接着就会出现上面的问题。而将该语句删除就不会出现上面的问题。毫无疑问,就是因为环境变量的设置导致了该问题的发生。

2、原因:

.net连接oracle使用的是oci接口,必须安装oracle客户端,并配置本地网络服务名tnsnames.ora。而我们在安装了客户端后,该软件就会为我们进行相应的配置。而配置的时候就会为我们添加该环境变量。而上面的设置就会导致该程序在运行的时候环境变量的丢失,从而影响到ORACLE客户端的运行。为了验证上面的想法,我进行了实验验证。
3、实验:
环境变量对客户端运行的影响实验
     a.首先将计算机中PATH环境变量有关于oracle客户端的注册清除,重启电脑让环境变量生效
     b.运行将上面环境变量设置注释掉的程序,本该运行正确的程序出现了与之前相同的错误
     c.然后我将关于的oracle客户端的环境变量path以字符串的形式加入到当前的可执行路径中,通过上面的设置环境变量的语句进行设定。
     d.再次运行该程序,程序正常运行。
实验分析:说明环境变量的设置是导致该错误的原因
4、对程序写此语句的目的进行分析:可能的目的是为了使当前程序的运行受操作系统的完全控制,加入到当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程(百度上说的)。
5、解决方法:
一是保留当前程序的完整路径,二是不用保留。
第一种:
     a.通过配置进行添加,即将当前程序运行得完整路径添加到环境变量中
     b.通过程序进行添加
     
    1、取出当前程序运行的完整路径:

      string oraclePath =
System.Windows.Forms.Application.StartupPath
     
    2、取出当前的环境变量(PATH):

      string str = Environment.GetEnvironmentVariable("PATH");
     
    3、通过字符串连接,将该环境变量进行重新设置:Environment.SetEnvironmentVariable("PATH",
oraclePath+";"+ str , EnvironmentVariableTarget.Process);

第二种:直接不将该程序运行的完整路径添加到环境变量path中,也就是添加该程序的课搜索路径。
6、总结
   将程序的可执行的完整路径添加到环境变量path中可以增加程序运行得稳定,特别是在生产release版本的时候,就可以防止出现找不到可执行文件的错误,毕竟计算机有时还是会出错,这只是一个双保险的感觉。

好了,基本上我就是这样做的,如果有更好的,我们可以一起讨论,一起学习。

  

时间: 2024-10-23 11:34:52

c# System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本的相关文章

解决"System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本"

在用VS2008+Oracle9做环境连接Oracle时候,在VS 开发服务器运行正常,但IIS服务器调试和部署会报错! IIS服务器报错:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本. 出错的原因: 1.虽然报的是需要安装客户端8.1.7及以上版本,实际是由于.NET账户没有访问Oracle\bin文件夹的权限 2.在 Windows Server 2003/2008 或Windows XP的 NTFS系统中提供了高级的访问安全性,F

iis System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。”解决方法

今天事情特别多, 电话不断, 但事情得一件一件的做. 在用VSTS2005/2008+Oracle9做环境连接Oracle时候,在VS 开发服务器运行正常,但IIS服务器调试和部署会报错! IIS服务器报错:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本. 出错的原因: 1.虽然报的是需要安装客户端8.1.7及以上版本,实际是.net账户没有访问Oracle\bin文件夹的权限 2.在 Windows Server 2003/2008 的

Reporting Services无法连接ORACLE,提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本

Reporting Services无法连接ORACLE,在服务器安装ORACLE 11客户端版本后仍然提示以下错误: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本 如图: 使用DOS命令是可以连接到ORACLE的 Micsoft用来连接oracle的odbc驱动 没有直接的odbc驱动,需要安装oracle客户端的,安装oracle客户端后,再用 Net Configuration Assistant 配置一个NET服务名 附加其它

System.Data.Oracleclient需要Oracle客户端软件Version8.1.7或更高版本问题

C#连接ORACLE报System.Data.Oracleclient需要Oracle客户端软件Version8.1.7或更高版本问题: 开始Webservice在32位系统ORACLE10g库中web.config中连接串为: <add name="EMRConnectionString" connectionString="Data Source=TEST1;User ID=TEST1;Password=TEST1;Unicode=True" provid

System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本

ADO.NET去查询oracle报错:System.Data.OracleClient requires Oracle client software version 8.1.7 or greater,网上很多人说是文件权限之类的问题.但我是通过安装Oracle客户端(64位49M那个)解决的,且客户端安装后必须重启! 原文地址:https://www.cnblogs.com/hepeng/p/8298124.html

解决IIS发布网站出现&quot;System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&quot;的问题

解决方案步骤如下:第一步给网站根目录添加如下数据权限,如图1所示 图1 第二步,右键我的电脑=>管理=>打开组,给administrator添加NETWORK SERVICE 权限,如图2所示 如图2所示 最后一步 重新启动IIS

System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本

原因: asp.net程序 需要在电脑上链接oracle数据库 解决办法:第一安装oracle客户端,精简版的也行(注释"必须重新安装,且 tnsnames 要配置好") 再不行,下载plsql  链接数据库,基本上就这两步 就能成功

【ORACLE】“System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本。”解决办法

我的电脑是win10.64位.问题如题,在网上找了很多办法都没搞好,如下: 1.给oracle目录设置“Authenticated Users”用户的“读取/写入”权限 2.IIS网站物理路径凭据添加windows用户 最终执行了通过下面的步骤解决了问题: 给windows全局变量-path,添加"product\11.2.0\client_1\BIN".

【转】System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

安装完ASP.NET,Oracle9i客户端后,使用System.Data.OracleClient访问Oracle数据库如果出现这种错误:System.Data.OracleClient requires Oracle client software version 8.1.7 or greater. 原因Oracle 9i Release 2 客户端在安装到Windows的NTFS分区下时的安全认证设置不正确,引起本机的Authenticated Users用户无法看到ORACLE_HOME