概述:

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. java并发编程:线程安全管理类--原子操作类--AtomicReferenceFieldUpdater<T,V>

    1.类 AtomicReferenceFieldUpdater<T,V> public abstract class AtomicReferenceFieldUpdater<T,V& ...

  2. 怎样解决IIS6.0上传文件限制的问题?

    我们用IIS发布的Bs项目,如果进行文件上传,在上传文件的时候,无法上传文件大小超过4M的文件 设置文件上传大小的方法,就是修改项目的web.config配置 在项目中的web.config文件中,添 ...

  3. POJ 2663 Tri Tiling 矩阵快速幂 难度:3

    Tri Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7841   Accepted: 4113 Descri ...

  4. Unity 3D连接MySQl数据库

    对数据库各种操作已经熟练,但是一遇到数据库问题还是头大,最近使用unity3d开发一款小型网络社区,遇到了各种问题分享一下以供大家参考: 以前使用的是SQL,第一次用MySQL,在网上随便下了一个,安 ...

  5. POJ 2309 BST(树状数组Lowbit)

    题意是给你一个满二叉树,给一个数字,求以这个数为根的树中最大值和最小值. 理解树状数组中的lowbit的用法. 说这个之前我先说个叫lowbit的东西,lowbit(k)就是把k的二进制的高位1全部清 ...

  6. ECharts报表的使用

    知道你们懒得手打网址,给你们贴上:http://echarts.baidu.com/echarts2/ 1.下载并解压之后,找到echarts-2.2.7\build\dist\echarts-all ...

  7. MyEclipse持续性开发教程:用JPA和Spring管理数据(三)

    MyEclipse红运年货节 在线购买低至69折!火爆开抢>> [MyEclipse最新版下载] 本教程介绍了MyEclipse中的一些基于JPA / Spring的功能.有关设置JPA项 ...

  8. 根据redis的pub/sub机制,写一个即时在线聊天应用

    在Redis中,有个Pub/Sub,他的主要的工作流程如: redis订阅一个模式频道如:chat_*,然后由小a想找人聊天了,就发送一个消息“现在有人聊天吗?chat_a”,末尾的chat_a为标识 ...

  9. php and mysql 常用api函数

  10. JavaScript学习(二)——深入学习js对象的原型与继承

    了解对象  什么是对象?   …… 这个就不说了 对象的声明的两种方式 var person = new Object(); person.name="linchen"; pers ...