打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#利用System.Data.OracleClient实现不安装Oracle客户端访问远程服务器数...

在未安装Oracle数据库客户端的前提下,C#通过使用ADO的方式远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”问题,本文提供一种方式解决该问题。
具体步骤步骤如下:
 第一步:下载Instant Client 文件
Oracle官方网站提供了Instant Client文件的下载,下载地址为:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,里面提供了支持不同操作系统和不同Oracle版本的对应下载,根据不同需求自己选择。

我的系统环境如下:

数据库服务器:WindowsServer2008x64

数据库服务端:oracle11.2.0.1.0

客户端系统:Windows7x64

因此我选择下载了instantclient-basic-win-x86-64-11.2.0.1.0.zip

只需在客户端将其解压即可(位置任意),我解压在d盘根目录,生成一个文件夹d:\instantclient_11_2(然后将其修改成oracleclient,根据自己需要修改),里面就是连接远程数据库要用到的dll文件。
    
第二步:配置环境变量

    1、 在PATH变量中增加【;D:\oracleclient】,即就是刚才我们解压Instant Client所在的目录;

    2、增加以下三个变量:
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
TNS_ADMIN= D:\oracleclient
LD_LIBRARY_PATH= D:\oracleclient

第三步:配置tnsnames.ora文件
 D:\oracleclient目录中增加一个tnsnames.ora文件,内容为访问数据库的配置信息。具体步骤为:新建一个txt文档,然后将一下内容复制进去,另存为tnsnames.ora即可。
ORCL=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = 192.168.1.107)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SERVICE_NAME = lottery) 
    )
  )
其中的HOST、PORT、SERVICE_NAME需要根据数据库实际信息进行修改。
此时在C#代码中的连接字符串可以按如下方式定义:

String conn =@'DataSource=ORCL;Persist Security Info=True;User Id=用户名;Password=密码';



否则,如果想省略第三步,在C#代码中的连接字符串必须按如下方式定义:           

String conn =String.Format('Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS= (PROTOCOL = TCP)(HOST = 192.168.1.107)(PORT = 1521))) (CONNECT_DATA=(SERVICE_NAME = lottery) ) );User Id=用户名;Password=密码;');

第四步:重启系统


C#代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
namespace TestOracle
{
    class Program
    {
        static void Main(string[] args)
        {
            String conn = @'Data Source=ORCL;Persist Security Info=True;User Id=testdb;Password=manager';
            String conn1 = String.Format('Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.107)(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = lottery) ) );User Id=testdb;Password=manager;');
            OracleConnection oc = new OracleConnection(conn);
            try
            {                
                oc.Open();
                OracleCommand cmd = oc.CreateCommand();
                cmd.CommandText = 'select sysdate from dual';
                OracleDataReader odr = cmd.ExecuteReader();
                while (odr.Read())
                {
                    Console.WriteLine(odr.GetDateTime(0).ToString());
                }                
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {               
                oc.Close();
            }
            Console.Read();
        }
    }
}

运行结果:


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# 连接 Oracle 的几种方式
vs2010连接到oracle 10g
C#连接Oracle数据库的简单应用 - 戛戛 - 博客园
OracleHelper
java里操作oracle执行插入操作
C#连接Access,Sql Server,Oracle,Mysql,IBM DB2,Sy...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服