C#实现不安装Oracle客户端访问远程服务器数据
概述:
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客户端访问远程服务器数据的更多相关文章
- C#实现不安装Oracle客户端访问远程服务器数据!!
概述: C#通过使用ADO的方式在未安装Oracle数据库的前提下,客户端程序远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或 ...
- 本地主机不安装oracle客户端--访问远程oracle数据库
在不安装oracle客户端情况下用sqlplus连接数据库: 1.去官网下载 http://www.oracle.com/technetwork/topics/winx64soft-089540.ht ...
- 转:不用安装Oracle客户端,远程连接Oracle数据库
转摘自: http://blog.sina.com.cn/s/blog_90b20fe70101az2z.html Oracle数据库安装过程较为繁琐,而且卸载更加麻烦,如果卸载不干净,下次安装Ora ...
- .net远程连接oracle数据库不用安装oracle客户端
asp.net远程连接oracle数据库不用安装oracle客户端的方法下面是asp.net连接远程Oracle数据库服务器步骤: 1.asp.net连接oracle服务器需要添加Sytem.Data ...
- .net远程连接oracle数据库不用安装oracle客户端的方法
.net远程连接oracle数据库不用安装oracle客户端的方法步骤: 1.添加Sytem.Data.OracleClient命名空间. 2.连接时需要ConnectionString字符串,出现在 ...
- 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动
由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...
- .net4.0中使用ODP.net访问Oracle数据库(无需安装oracle客户端部署方法)
1.在没有安装oracle客户端的设备上也能访问服务器上的oracle (通俗的讲就是:开发的应用程序 和 oracle数据库服务器分别在两台电脑上)2.不需要配置TnsNames.Ora文件 开发环 ...
- 不安装oracle客户端,用plsql连接oracle
常用的Oracle开发的工具有SQL Developer和PL/SQL Developer,个人感觉前者虽然跨平台性优于后者,但比较大(大于300M)占用资源,而且用户体验也一般,而后者相对就小很多( ...
- 一个不安装Oracle客户端的方法------未经试验
(一)不安装客户端的解决办法.第一种方法:1.在安装ORACLE服务器的机器上搜索下列文件,oci.dllocijdbc10.dllociw32.dllorannzsbb10.dlloraocci10 ...
随机推荐
- poj1088 滑雪 解题报告
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 77423 Accepted: 28779 Description ...
- .net下4款不错的微信SDK
.net下4款不错的微信SDK: 一款值得推荐的.Net微信开发SDK http://www.17ky.net/soft/474.html.Net微信公开帐号接口 WeiXinSDK http://w ...
- Mysql/Mariadb 升级注意事项
因需要使用到分区表,在业务不中断的情况下,可以新增分区,需要将原来的Mariadb10.1.25版本升级到Mariadb10.3.8. 1.升级步骤如下 1)新搭建Mariadb10.3.8版本的DB ...
- Pycharm(四)常用快捷键
Ctrl + Alt +S 进入设置Ctrl + Alt + L 代码格式化Ctrl + Alt + I 自动缩进Ctrl + D 复制当前行 Ctrl + / 注释(取消注释)当前行 再有什么用的多 ...
- 远程访问Centos6.5上的mysql或者mariadb(navicat)
问题背景 1 环境 物理主机操作系统Centos6.5 虚拟主机KVM:centos6.5 64位min版本(虚拟机安装有台) 网络:桥接模式 2 问题 yum安装mariadb10/mysql6.5 ...
- C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“
原文地址:http://blog.csdn.net/onlyou930/article/details/5602654 圆环套圆环之迭代器 话说这一日是风平浪静,万里乌云,俺的心情好的没得说,收到命令 ...
- L1-019 谁先倒
划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒.两人同赢或两人同输 ...
- DevExpress v18.1新版亮点——WinForms篇(二)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...
- 集成学习之Boosting —— XGBoost
集成学习之Boosting -- AdaBoost 集成学习之Boosting -- Gradient Boosting 集成学习之Boosting -- XGBoost Gradient Boost ...
- 高版本的jdk编译过的项目移到低版本的JDK的eclipse中出错的问题
由于2台电脑安装的jdk版本不一样,导致从一台电脑移动项目到另一台电脑上时,运行出现了错误,错误信息如下: 主要是原先项目运行的JDK版本为1.8, 而要移过去的电脑的jdk是1.7的,首先已经把bu ...