概述:

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

关键词:C#、Oracle客户端、Instant Client

解决方案:

基本思路:将访问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. 如何解决Css属性text-overflow:ellipsis 不起作用(文本溢出显示省略号)

    如何使text-overflow:elipsis起作用? 想要使用css属性text-overflow:elipsis起到作用,样式必须跟overflow:hidden; white-space:no ...

  2. laravel 连接同一服务器上多个数据库操作 、 连接多个不同服务器上的不同数据库操作以及多个数据库操作的事务处理

    !注意:标红的要注意区分开 第一步.配置.env文件(同一服务器上多个数据库) DB_CONNECTION=pgsqlDB_HOST=IP(例如:127.0.0.1)DB_PORT=端口号(例如:54 ...

  3. 封装ajax函数

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  4. 利用express.js连接mongodb数据库

    var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/ ...

  5. .net群讨论笔记

    本篇为.net群中学到的零碎知识点笔记,将持续更新 感谢群内大神,群号(128485855) 1.关于URL编码问题encodeURIComponent 2.c#直接打开本机的excel(包括其他类型 ...

  6. Python Django 之 MVT

    一.Django的MVT模式 M: Model, 模型 与MVC中的M相同,负责对数据的处理 V: View, 视图 与MVC中的C类似,负责处理用户请求,调用M和T,响应请求 T: Template ...

  7. ACCESS修改密码,更新显示

    public partial class 修改用户信息frm : Form { public 修改用户信息frm() { InitializeComponent(); } public string ...

  8. SWIFT中调用Segue的几个方法

    场景1: 如图所示,在视图的第一个按钮处拉出一条Segue到另外一个视图,并给这个Segue命名,如SegueOne 此时可以用代码调用这个Segue切换视图: self.performSegueWi ...

  9. Tomcat结合nginx使用入门

    Nginx: Nginx是一款高性能,轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 特点是:占有内存少,并发能力强. 反向代理服务器: 反向代理(Reverse  ...

  10. arpg网页游戏特效播放(一)

    网页游戏中的特效,主要包括:场景特效,攻击特效和UI特效三种.场景特效是在地图层上播放的特效,攻击特效主要是技能触发的一些特效,UI特效是面板上的一些特效,还有一些在人物身上播放的特效,例如脚底光圈特 ...