久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

在C#中,,遠(yuǎn)程連接Oracle數(shù)據(jù)庫(不安裝客戶端,無需多余配置)

 zp_0409 2016-08-06

由于項(xiàng)目需要,,現(xiàn)需要向遠(yuǎn)程Oracle數(shù)據(jù)庫插入數(shù)據(jù),。由于后期可能無法在部署程序的電腦上安裝oracle客戶端,網(wǎng)上也有一些解決辦法,,通常是要下載對(duì)應(yīng)版本的Oracle Instant Client,,將訪問Oracle需要的部分Dll文件拷貝到客戶端本地,然后通過配置環(huán)境變量或修改注冊(cè)表的方式,,來達(dá)到快速安裝客戶端的目的,,如果后期部署程序在虛擬空間時(shí),配置環(huán)境變量或修改注冊(cè)表或許不可行,。這里提供一種簡(jiǎn)單,、無需安裝和多余配置的方法,適用于.NET C#,。

本方法通過程序內(nèi)集成Oracle客戶端,,下面是這種方法的具體實(shí)現(xiàn):

1.從Oracle官網(wǎng)上下載對(duì)應(yīng)版本的Oracle Instant Client,,以下是官網(wǎng)鏈接
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

但是由于我下載其中的Win32版本的文件不全,因此又通過查找另外下載了一些文件,,現(xiàn)已把我在32位機(jī)器上測(cè)試遠(yuǎn)程連接Oracle 10g數(shù)據(jù)庫通過的完整文件上傳到csdn,,鏈接為http://download.csdn.net/detail/xiaohu_2012/5999699,壓縮包包括如下文件:

classes12.jar oci.dll
ocijdbc10.dll
ociw32.dll
ojdbc14.jar
Oracle.DataAccess.dll
orannzsbb10.dll
oraocci10.dll
oraociei10.dll
OraOps11w.dll

其中OraOps11w.dll與Oracle.DataAccess.dll需要配套,。

2.在你的工程目錄里新建一個(gè)文件夾Oracle(名字和位置隨便定),,將上述文件拷貝到里邊,并在Visual Studio中添加這個(gè)文件夾及文件們,。保證可以在解決方案中看到它們。

3.在Visual Studio IDE 的解決方案資源管理器中,,打開Oracle文件夾,,選中里邊所有的文件,在“屬性”“復(fù)制到輸出目錄”里設(shè)置“如果較新則復(fù)制”,,這樣在編譯或者發(fā)布程序時(shí),,Oracle文件夾會(huì)隨著發(fā)布到exe所在的地方,部署的時(shí)候就不會(huì)出現(xiàn)找不到Oracle庫的情況,。

4.按照網(wǎng)上的大多數(shù)教程,,這個(gè)時(shí)候就需要配置Windows環(huán)境變量了。其實(shí)這一步并不是必須的,,因?yàn)榭紤]到不同的客戶環(huán)境,,有可能用戶沒有權(quán)限在他的計(jì)算機(jī)上操作這些,那么我們可以把設(shè)置Oracle環(huán)境變量放到程序里來做,。這就需要在使用Oracle連接之前,,添加如下代碼:

//取得oracle驅(qū)動(dòng)文件夾的位置,也就是放oci.dll的地方 string oraclePath = System.Windows.Forms.Application.StartupPath + @'\oracle'; //設(shè)置環(huán)境變量“PATH”,,寫入oracle驅(qū)動(dòng)所在的文件夾 //第三個(gè)參數(shù)表示這個(gè)PATH只在當(dāng)前進(jìn)程起作用,,不會(huì)修改電腦本身。 Environment.SetEnvironmentVariable('PATH', oraclePath,EnvironmentVariableTarget.Process); //設(shè)置Oracle在通訊過程中使用的語言和字符集,。 //我的項(xiàng)目用的是上面的字符集,,對(duì)應(yīng)到你的項(xiàng)目,可用SQL語句去oracle數(shù)據(jù)庫中查詢,。 //這個(gè)語言和字符集一定要和服務(wù)器一致,,否則可能會(huì)出現(xiàn)亂碼甚至無法連接。 Environment.SetEnvironmentVariable('NLS_LANG', 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', EnvironmentVariableTarget.Process);

補(bǔ)充說明,,可以用以下SQL語句查詢字符集:

select userenv('language') from dual;查詢服務(wù)端字符集,用來設(shè)置上面的參數(shù),。 select * from nls_database_parameters;//服務(wù)器字符集 select * from nls_instance_parameters;//ora文件定義字符集 select * from nls_session_parameters;//會(huì)話字符集

5.理論上,經(jīng)過上面的設(shè)置,,你的程序就可以使用內(nèi)置到exe目錄下的Oracle驅(qū)動(dòng)了,,這里要注意的還有就是連接數(shù)據(jù)庫的方式,,上面的修改并不能保證你可以使用tns名來連接,因此連接字符串要做如下修改:

'Persist Security Info=True;User ID=數(shù)據(jù)庫用戶名;Password=密碼;Unicode=True;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=服務(wù)器IP地址)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=服務(wù)器上全局?jǐn)?shù)據(jù)庫的服務(wù)名)))'
這個(gè)主要是把'Data Source'這部分直接用TCP/IP字符串方式替換了(通常Data Source是寫tns名稱的)

6.Ok,,運(yùn)行程序,,連接成功!

    本站是提供個(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)論公約

    類似文章 更多