C 操作 Oracle小結

2021-09-25 04:20:16 字數 1232 閱讀 5582

這幾天打算做乙個c#安裝部署專案,附帶要還原oracle資料庫,之前的想法是想在web伺服器上能夠自動還原oracle資料庫(不管web伺服器是否已安裝oracle客戶端或服務端),後來經過驗證此法是行不通的,不過sqlserver就可以,它是可以呼叫interop.sqldmo.dll元件,但是oracle的話需要呼叫sqlplus或imp、exp等工具,這樣的話必須要安裝oracle,後來在網上找了幾種oracle免安裝方式,有些是可以直接連oracle伺服器了,但是沒imp、exp等工具,後來好不容易找了乙個有imp、exp工具的,可以將資料匯出來,但是我試了一下午匯入(用自己開發的乙個匯入程式),結果試了一下午就是不行。表現出來的效果好像是死鎖了,但是後來我直接用command命令一試,結果表明是我的免安裝的oracle環境問題。

無奈我想只能調整一下我的方案,在web伺服器上安裝時讓使用者自己選擇安裝專案(選安裝**),在資料庫伺服器選「安裝資料庫」。

今天主要實驗的是用c#呼叫command命令列來執行oracle的匯入或執行oracle 的 sql操作:

如果想獲取標準輸出流或錯誤輸出流時,在執行waitforexit()方法時可能會導致死鎖情況的發生,可以有幾種方式

1. 非同步讀取流。

2.使用兩個執行緒分別讀取標準輸出流和錯誤輸出流。

1.非同步讀流:

private

void

imp1()

catch

(exception ex)}

2.使用執行緒

private void imp2()

catch (exception ex)

}///

/// threadstandardoutput

///

input.bat 內容:

imp testuser/123@orcl buffer=10000000  full=y file=c:\sfsb_7_29.dmp log=c:\sfsb_7_29imp.txt

insert.bat 內容:

sqlplus testuser/123@orcl11

'@c:\insert.sql','@c:\insert.sql'

insert.sql 內容

insert into testtab(userid,username) values('user1','使用者1');

insert into testtab(userid,username) values('user2','使用者2');

commit;

C 操作XML小結

一 簡單介紹 using system.xml 初始化乙個xml例項 xmldocument xml new xmldocument 指定乙個節點 xmlnode root xml.selectsinglenode root 獲取節點下所有直接子節點 xmlnodelist childlist ro...

C 操作XML小結

文章 一 簡單介紹 using system.xml 初始化乙個xml例項 xmldocument xml new xmldocument 指定乙個節點 xmlnode root xml.selectsinglenode root 獲取節點下所有直接子節點 xmlnodelist childlist...

C 操作XML小結

本文摘自 csdn的博文 c 操作xml小結 一 簡單介紹 using system.xml 初始化乙個xml例項 xmldocument xml new xmldocument 指定乙個節點 xmlnode root xml.selectsinglenode root 獲取節點下所有直接子節點 x...