概述:

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. 快速切题 sgu103. Traffic Lights 最短路 难度:1

    103. Traffic Lights Time limit per test: 0.25 second(s)Memory limit: 4096 kilobytes input: standardo ...

  2. 团队作业之现场UML设计

    项目UML设计(团队) 团队信息 团队名:第三视角 各成员学号及姓名 姓名 学号 博客链接 张扬(组长) 031602345 http://www.cnblogs.com/sxZhangYang/p/ ...

  3. 使用MyEclipse开发Java EE应用:EJB项目开发初探(下)

    你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] 三.EJB 3.x项目中的持久性支持 当创建EJB 3.x项目时,作为选项您可以添加JPA ...

  4. C#读取Access数据表中某一列内容,保存至数组

    string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb";OleDbConnecti ...

  5. Redis学习第二课:Redis String类型及操作

    Strings类型 String是最简单的类型,一个Key对应一个Value,String类型是二进制安全的,可以包含任何数据,比如jpg图片或序列化的对象. Strings类型的操作: Set:设置 ...

  6. UITableViewCell的高度与UILabel自适应

    UITableViewCell内部只放了一个UILabel,Cell的高度随着UILabel内容的高度变化而变化,可重写UITableView的委托方法动态调整高度,还要设置UILabel.numbe ...

  7. asp.net mvc 快捷下拉列表

    各种表单中可能经常会遇到使用各种下拉列表的地方, 有些数据是从数据库来的, 有些则是固定数值, 为了方便, 快速的构造一个可以保持状态的下拉列表, 就出现了下面的方法 2分钟构思的代码, 比较粗糙, ...

  8. WCF异常相关

    1.端口没打开 解决办法: services.msc 启动Net.Tcp Port Sharing Service 2.由于访问被拒,服务终结点未能侦听 URI“net.tcp://localhost ...

  9. PDB调试模块

    这里主要是一些对于调试常用的命令:1.直接通过命令端输入进行调试 以pdb调试模式运行(主要用这个) python3 -m pdb file.py 2.在代码中导入pdb模块 import pdb 功 ...

  10. 生成html报告并整合自动发动邮件功能

    from HTMLTestRunner import HTMLTestRunnerfrom email.mime.text import MIMETextfrom email.header impor ...