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

第一步:下载Instant Client 文件

1.去Oracle官网下载Instantclient。

我是在这里下载Instantclient的:http://www.oracle.com/technetwork/cn/database/windows/downloads/index-098472-zhs.html

2.然后将此文件放在C盘根目录下,例如C:\instantclient_11_2

第二步:配置环境变量

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

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

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

TNS_ADMIN= C:\instantclient_11_2

LD_LIBRARY_PATH= C:\instantclient_11_2

第三步:增加tnsnames.ora文件

在C:\instantclient_11_2下添加一个配置文件tnsnames.ora,内容如下

# tnsnames.ora Network Configuration File: tnsnames.ora
# Generated by Oracle configuration tools.

toptst =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.198.59 )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = toptst )
)
)

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

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

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

SERVICE_NAME = 服务器数据库服务的名字

第四步

在进程选项卡中找到explorer.exe,把该进程结束掉,然后在应用程序选项卡中点击“新任务(N)…”,在弹出的新建任务窗口中输入explorer.exe,确定即可。其原理就是重启一下explorer进程,以达到刷新注册表的目的。

c#测试代码

 using System.Data.OracleClient;
private void button1_Click(object sender, EventArgs e)
{
string ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.198.59 ) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME= toptst)));
User Id=ERPHIC; Password=***";
if (!string.IsNullOrEmpty(textBox1.Text.ToString()))
{
ConnectionString = textBox1.Text.ToString();
}
OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接
try
{
conn.Open();
string sqltime= "select to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss') from dual";
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = sqltime;
DataTable dt = new DataTable();
OracleDataAdapter adt = new OracleDataAdapter(cmd);
adt.Fill(dt);
dataGridView1.DataSource = dt;
cmd.Dispose();
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
}
finally
{
conn.Close(); //关闭连接
}
}

此文章转自https://www.cnblogs.com/alanjl/p/3413599.html,在读了这位小哥文章后解决了我的问题,再次谢谢这位小哥的分享。

最新文章

  1. python操作postgresql数据库
  2. Valid Parentheses [LeetCode 20]
  3. C#路径 (转载)
  4. Matlab安装
  5. 三、T4模板与实体生成
  6. poj 3026Borg Maze
  7. SPI协议总结
  8. POJ 3684 Priest John's Busiest Day 2-SAT+输出路径
  9. java设计模式------工厂设计模式
  10. 实验与作业(Python)-02 Python函数入门与温度转换程序
  11. jq中的$操作符与其他js框架冲突
  12. IntelliJIdea 2016.2 使用 tomcat 8.5 调试spring的web项目时,bean被实例化两次导致timer和thread被启动了两遍的问题的解决
  13. Selenium Webdriver弹出框的种种类型
  14. 查询选修了全部课程的学生姓名_如何解?-MS-SQLServer/应用实例
  15. [UE4]自定义结构体、类、数据表
  16. python解析式
  17. 《JavaScript高级程序设计》读书笔记--ECMAScript中所有函数的参数都是按值传递的
  18. Makefile伪目标
  19. unity 在Game视图中显示Gizmos
  20. 运维角度浅谈:MySQL数据库优化

热门文章

  1. ubuntu 下交叉编译环境的搭建
  2. ABP 软删除ISoftDelete
  3. 在Packstack环境手动安装OVN
  4. UGUI(七)界面拖动和焦点界面
  5. Hyperledger Fabric 第一次安装
  6. elasticsearch学习(三):分布式
  7. 洛谷 P3372 【模板】线段树 1
  8. 洛谷P2414 [NOI2011]阿狸的打字机(AC自动机)
  9. 十、正则表达式和JSON
  10. Spring Cloud与Duddo比较(非原创)