這幾天打算做乙個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...