日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C#利用System.Data.OracleClient實(shí)現(xiàn)不安裝Oracle客戶端訪問遠(yuǎn)程服務(wù)器數(shù)...

 百曉生nyj 2020-04-03

在未安裝Oracle數(shù)據(jù)庫客戶端的前提下,C#通過使用ADO的方式遠(yuǎn)程訪問服務(wù)器,會(huì)出現(xiàn):“System.Data.OracleClient 需要 Oracle 客戶端軟件 8.1.7 或更高版本”問題,本文提供一種方式解決該問題。
具體步驟步驟如下:
 第一步:下載Instant Client 文件
Oracle官方網(wǎng)站提供了Instant Client文件的下載,下載地址為:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,里面提供了支持不同操作系統(tǒng)和不同Oracle版本的對(duì)應(yīng)下載,根據(jù)不同需求自己選擇。

我的系統(tǒng)環(huán)境如下:

數(shù)據(jù)庫服務(wù)器:WindowsServer2008x64

數(shù)據(jù)庫服務(wù)端:oracle11.2.0.1.0

客戶端系統(tǒng):Windows7x64

因此我選擇下載了instantclient-basic-win-x86-64-11.2.0.1.0.zip

只需在客戶端將其解壓即可(位置任意),我解壓在d盤根目錄,生成一個(gè)文件夾d:\instantclient_11_2(然后將其修改成oracleclient,根據(jù)自己需要修改),里面就是連接遠(yuǎn)程數(shù)據(jù)庫要用到的dll文件。
    
第二步:配置環(huán)境變量

    1、 在PATH變量中增加【;D:\oracleclient】,即就是剛才我們解壓Instant Client所在的目錄;

    2、增加以下三個(gè)變量:
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
TNS_ADMIN= D:\oracleclient
LD_LIBRARY_PATH= D:\oracleclient

第三步:配置tnsnames.ora文件
 D:\oracleclient目錄中增加一個(gè)tnsnames.ora文件,內(nèi)容為訪問數(shù)據(jù)庫的配置信息。具體步驟為:新建一個(gè)txt文檔,然后將一下內(nèi)容復(fù)制進(jìn)去,另存為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需要根據(jù)數(shù)據(jù)庫實(shí)際信息進(jìn)行修改。
此時(shí)在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=密碼;');

第四步:重啟系統(tǒng)


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();
        }
    }
}

運(yùn)行結(jié)果:


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多