博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#在不安装Oracle客户端的情况下与服务器上的Oracle数据库交互
阅读量:6865 次
发布时间:2019-06-26

本文共 2682 字,大约阅读时间需要 8 分钟。

 概述:
     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#测试代码

1 using System.Data.OracleClient; 2  private void button1_Click(object sender, EventArgs e) 3         { 4             string ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.198.59  5  6 ) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME= toptst))); 7                                         User Id=ERPHIC; Password=***"; 8             if (!string.IsNullOrEmpty(textBox1.Text.ToString())) 9             {10                 ConnectionString = textBox1.Text.ToString();11             }12             OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接13             try14             {15                 conn.Open();16                 string sqltime= "select to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss') from dual";17                 OracleCommand cmd = conn.CreateCommand();18                 cmd.CommandText = sqltime;19                 DataTable dt = new DataTable();20                 OracleDataAdapter adt = new OracleDataAdapter(cmd);21                 adt.Fill(dt);22                 dataGridView1.DataSource = dt;23                 cmd.Dispose();24             }25             catch (Exception ee)26             {27                 MessageBox.Show(ee.ToString());28             }29             finally30             {31                 conn.Close(); //关闭连接32             }33         }

 

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

转载于:https://www.cnblogs.com/evanmemo/p/8548129.html

你可能感兴趣的文章
php内存限制
查看>>
mysql中的主从复制slave-skip-errors参数使用方法
查看>>
永久关闭wps热点新闻的办法
查看>>
linux----->shell高级编程----grep应用
查看>>
poj —— 1274 The Perfect Stall
查看>>
JavaWeb中连接数据库的一般方式与通过JNDI连接池的方式
查看>>
驳斥《沙盒用于数据防泄密是重大技术原理性失误》
查看>>
【Linux】 JDK安装及配置 (tar.gz版)
查看>>
伟人必须回答的(二十道问题)
查看>>
为什么只有很少的人听说过西工大这个名字?
查看>>
多读多写多实践---给初学编程者的建议
查看>>
Linux系统文件类型
查看>>
java b2b2c开源商城系统源码
查看>>
我的友情链接
查看>>
二叉树
查看>>
MySQL/MariaDB基础及简单SQL语句
查看>>
css3弹性盒子模型之box-flex
查看>>
运用层通过shell脚本直接操控gpio
查看>>
docker常用命令
查看>>
查看MYSQL数据库中所有用户及拥有权限
查看>>