概述:

C#通过使用ADO的方式在未安装Oracle数据库的前提下,客户端程序远程访问服务器,会出现“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”问题,本文讲述如何通过简单方式快速实现免安装客户访问Oracle数据库,以解决当前问题。

解决方案:

基本思路:将访问Oracle需要用的部分DLL文件拷贝到客户端本地,然后通过配置环境变量或修改注册表的方式来达到快速客户端安装的目的。这种解决方案并不是说完全不需要在客户端处理,而是简化客户端的部分工作量,只需要在本地增加几个文件,然后修改一下配置就能达到快速客户端的目的。下面我们来看一下具体步骤:

第一步:下载Instant Client文件

如果你之前已经有了,那当然就不用再下载了,可跳过第一步!

Oracle官方网站提供了一个名为Instant Client的文件,instant的英文解释为“瞬间、立即、片刻”,那么顾名思义Instant Client应该可以被理解为“Oracle快速客户端”。下载地址为:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

里面提供了不同操作系统和不同Oracle版本的对应的下载,可根据真实情况选择。

以我为例,下载的版本为: Windows平台 32位系统,对应Oracle 10.1.0.5版本的全功能包。

因为下载后为绿色版本的(非安装程序),所以只需要将其解压即可(目录可以随意,这里我解压的目录为D盘),由于刚才下载的版本为10.1的,那么解压后将在D盘生成一个

instantclient10_1文件夹(这个文件夹名字可以修改,没关系),里面就是我们要用到的dll文件了。

第二步:配置环境变量

     找到设置环境变量配置的地方(我的电脑右键属性->高级->环境变量)

在系统变量中,首先找到Path变量名,然后点“编辑”,在其变量值后面加入中括号内的内容[;D:\instantclient10_1],注意不要把中括号加进去了,这个值其实就是刚才我们解压Instant Client所在的目录,根据真实情况,修改即可。然后还是在系统变量中,增加以下三个变量:

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

TNS_ADMIN= D:\instantclient10_1

LD_LIBRARY_PATH= D:\instantclient10_1

第三步:增加tnsnames.ora文件

在刚才设置的目录中(D:\instantclient10_1)增加一个tnsnames.ora文件,内容为访问数据库的配置信息。具体步骤为:新建一个txt文档,然后将一下内容复制进去,另存为tnsnames.ora即可。

orcl=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS =

(PROTOCOL = TCP)

(HOST = 192.168.0.105)

(PORT = 1521)

)

)

(CONNECT_DATA =

(SERVICE_NAME = VM)

)

)

说明,以下需要根据实际情况修改:

HOST = 服务器地址IP 或服务器名称

PORT = 服务器端口号,默认为“1521“

SERVICE_NAME = 服务器数据库服务的名字,默认为:”orcl“

 

第四步:重启计算机

(这个不用讲了吧!呵呵,不知道如何重启的,请先百度或Google)

当然也有一种替代重启的方法:同时按下一下三个键Ctrl+Alter+Del,会弹出Windows任务管理器,在进程选项卡中找到explorer.exe,把该进程结束掉,然后在应用程序选项卡中点击“新任务(N)…”,在弹出的新建任务窗口中输入explorer.exe,确定即可。其原理就是重启一下explorer进程,以达到刷新注册表的目的。

说明:本人已经测试通过。如果哪天配置环境Path变量能通过附录中的方法解决,那么就可以达到真的不要第四步了。

附录:

如何快速配置环境变量:

上文中步骤二提到需要修改Path变量值,和新增三个变量。可以采用以下两种方式来通过修改注册表的方法快速增加这三个环境变量。(注:Path因是附加操作,暂时测试未成功,仍需手动加,哪天解决了,在把程序补上)

方式一:通过使用注册项(.reg)文件

将下面的代码复制到txt文档,然后另存为后缀为.reg的注册项文件,文件名可以随意取【例如:InstantClientEnvironment.reg】,完成后双击该注册项文件,即配置好了三个变量。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]

"NLS_LANG" = "SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

"TNS_ADMIN" = "D:\\instantclient10_1"

"LD_LIBRARY_PATH"= "D:\\instantclient10_1"

希望了解“如何通过使用注册项 (.reg) 文件添加、修改或删除注册表子项和值”请参考微软官方说明

http://support.microsoft.com/kb/310516/zh-cn

方式二:通过使用批处理脚本文件(.bat

将下面的代码复制到txt文档,然后另存为后缀为.bat的注册项文件,文件名可以随意取【例如:InstantClientEnvironment.bat】,完成后双击该注册项文件,即配置好了三个变量。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"  /v NLS_LANG /t reg_sz /d "SIMPLIFIED CHINESE_CHINA.ZHS16GBK" /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TNS_ADMIN /t reg_sz /d "D:\\instantclient10_1" /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v LD_LIBRARY_PATH /t reg_sz /d "D:\\instantclient10_1" /f

 

注:红色的字体表示需要根据你实际情况进行修改的。影响的注册表效果可在运行中输入regedit命令查看注册表,找到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment验证我们程序修改后的注册表,如下图所示:

C#实现不安装Oracle客户端访问远程服务器数据!!的更多相关文章

  1. C#实现不安装Oracle客户端访问远程服务器数据

    概述: C#通过使用ADO的方式在未安装Oracle数据库的前提下,客户端程序远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或 ...

  2. 本地主机不安装oracle客户端--访问远程oracle数据库

    在不安装oracle客户端情况下用sqlplus连接数据库: 1.去官网下载 http://www.oracle.com/technetwork/topics/winx64soft-089540.ht ...

  3. 转:不用安装Oracle客户端,远程连接Oracle数据库

    转摘自: http://blog.sina.com.cn/s/blog_90b20fe70101az2z.html Oracle数据库安装过程较为繁琐,而且卸载更加麻烦,如果卸载不干净,下次安装Ora ...

  4. .net远程连接oracle数据库不用安装oracle客户端

    asp.net远程连接oracle数据库不用安装oracle客户端的方法下面是asp.net连接远程Oracle数据库服务器步骤: 1.asp.net连接oracle服务器需要添加Sytem.Data ...

  5. .net远程连接oracle数据库不用安装oracle客户端的方法

    .net远程连接oracle数据库不用安装oracle客户端的方法步骤: 1.添加Sytem.Data.OracleClient命名空间. 2.连接时需要ConnectionString字符串,出现在 ...

  6. 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动

    由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...

  7. .net4.0中使用ODP.net访问Oracle数据库(无需安装oracle客户端部署方法)

    1.在没有安装oracle客户端的设备上也能访问服务器上的oracle (通俗的讲就是:开发的应用程序 和 oracle数据库服务器分别在两台电脑上)2.不需要配置TnsNames.Ora文件 开发环 ...

  8. 不安装oracle客户端,用plsql连接oracle

    常用的Oracle开发的工具有SQL Developer和PL/SQL Developer,个人感觉前者虽然跨平台性优于后者,但比较大(大于300M)占用资源,而且用户体验也一般,而后者相对就小很多( ...

  9. 一个不安装Oracle客户端的方法------未经试验

    (一)不安装客户端的解决办法.第一种方法:1.在安装ORACLE服务器的机器上搜索下列文件,oci.dllocijdbc10.dllociw32.dllorannzsbb10.dlloraocci10 ...

随机推荐

  1. unity Transform Find 的用法!!!

    用法: Transform Find(String name) 1.查找名为name的(transform.gameObject)直接子物体并返回该子物体的Transform属性.不能是孙子物体或更低 ...

  2. eclipse:failed to create the java virtual machine

    今天eclipse出现failed to create the java virtual machine无法启动,在网上找了解决办法如下: 找到eclipse目录下的eclipse.ini,可以看到如 ...

  3. VS编译的QT程序发布时产生的AppCrash问题

    至少我碰到了三个情况,都是AppCrash错误(以下都指VS2008的Release的设置) 第1个错误,报错模块是程序自己 我使用VS2008 Team with SP1和QT4.86编译程序,一直 ...

  4. Array.prototype.slice.call(document.querySelectorAll('a'), 0)

    Array.prototype.slice.call(document.querySelectorAll('a'), 0)的作用就是将一个DOM NodeList 转换成一个数组. slice()方法 ...

  5. 唯一区别是不会去取emptyText 的值,没有选选择选项的时候返回是空字符串

    combox取值以及赋值的方法 function getValue() { //注意:以下这两种取值方法都会存在一个问题: 当combox设置成能输入并有只能提示的时候,当输入的不是备选项时,或到的v ...

  6. Javascript获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度

    /******************** * 取窗口滚动条高度  ******************/function getScrollTop(){    var scrollTop=0;    ...

  7. 蒙特罗卡π算法(C++语言描述)

    圆的面积计算公式为:S=π*r*r 将圆放到一个直角坐标系中,如图黄色部分的面积是S/4=(π*r*r)/4;如果我们将取一个单位圆,则S/4=π/4. 因为是单位圆,半径为1,所以图中红色正方形的面 ...

  8. (六)C#中判断空字符串的三种方法性能分析

    三种方法分别是: string a=""; 1.if(a=="") 2.if(a==string.Empty) 3.if(a.Length==0) 三种方法是等 ...

  9. Android端通过HttpURLConnection上传文件到服务器

    Android端通过HttpURLConnection上传文件到服务器 一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HT ...

  10. hihoCoder 1043 完全背包 (dp)

    http://hihocoder.com/problemset/problem/1043 动态转移方程 :for v=cost..V f[v]=max(f[v],f[v-c[i]]+w[i]); #i ...