1. 程式人生 > >C#連線Oracle資料庫通過儲存過程操作資料庫

C#連線Oracle資料庫通過儲存過程操作資料庫

之前筆者一直用C#連線SQL Server資料庫。近期由於工作需要,需要用C#連線Oracle資料庫,並且要通過儲存過程,來操作資料庫中的資料,實現增、刪、改、查(有分頁功能)功能。並且,為了今後對資料庫擴充套件方便,對現在的程式碼改動最小的情況下,實現資料庫的平穩切換,必須採用OleDB的方式連線Oracle資料庫、操作儲存過程。

首先去網上搜索資料,確實找到了很多C#連線Oracle資料庫,和用儲存過程操作資料庫的資料。但是仔細研究發現,清一色的全部是使用OracleClientOracle專用驅動)的方式對Oracle資料庫及儲存過程進行操作。沒辦法,只能自己動手、豐衣足食。經過3天左右的辛苦努力,終於實現了用

OleDB連線Oracle資料庫,並且用儲存過程來操作Oracle資料庫的方法。下面將實現方式總結一下。

OleDB操作Oracle儲存過程,有幾個難題;

1、返回記錄集,也就是Oracle的遊標;

2、對於某些特殊的應用,有可能需要返回多個記錄集;

3、將儲存過程中的資料,通過輸出引數的形式返回給程式(因為要做分頁,需要將記錄數輸出來);

4、Text大文字欄位(對應Oracle的資料型別是CLOB)的增、改、查操作;

5、對特殊字元的查詢,如查詢文字中是否包含“%”、“/”、“”、“_”等符號;

接下來,主要針對以上問題,進行介紹;

一、連線Oracle資料庫

連線Oracle資料庫,主要有

2種方式。一種是使用微軟的資料庫驅動進行連線;另外一種是使用Oracle的資料庫驅動進行連線;

經過在網上查資料,說是Oracle的資料庫驅動,中文可能會出現亂碼;微軟的驅動雖然中文沒有亂碼,但是對於CLOB型別的欄位,無法操作;經過對比,決定使用Oracle的資料庫驅動。因為應用中,肯定要有CLOB型別的欄位操作;但是經過測試,未發現中文出現亂碼的情況;

ØOracle資料庫連線方式:

Provider=OraOLEDB.Oracle.1;User ID=username;password=dbpassword;Data Source=databasename;Persist Security Info=True;Extended Properties='PLSQLRSet=1';

Extended Properties='PLSQLRSet=1'

注意:上面這個屬性一定要帶上,否則無法操作有返回遊標引數的儲存過程;

Ø微軟的資料庫連線方式:

Provider=MSDAORA.1;Data Source=allrun;User ID=allrunadmin;Password=allrun;Persist Security Info=True;

建議使用Oracle資料庫的連線方式。

二、儲存過程,返回多個記錄集

Oracle儲存過程指令碼:

C#程式操作儲存過程:

因為主要是介紹操作資料庫儲存過程的方法,如何連線資料庫請自己寫;

一、CLOB欄位的增、改、查;

假設表名為:DESKTOP_PAGE,包含2個欄位:USERCODE(普通字串)、CONTENTCLOB型別)

Oracle儲存過程指令碼為:

四、對特殊字元的查詢,如查詢文字中是否包含“%”、“/”、“”、“_”等符號;

Oracle指令碼:

以上是筆者操作Oracle資料庫總結出來的一些經驗,然後對大家有所幫助。s