ado.net串連Oracle專題

來源:互聯網
上載者:User

一、概述

訪問Oracle的兩種資料提供者lMicrosoft .NET Framework Data Provider for Oracle
Oracle .NET 資料提供者隨 .NET 架構 1.1 一起提供。如果您使用的是 .NET 架構 1.0,您將需要下載 .NET Managed Provider for Oracle。無論是哪個版本,資料提供者類都位於 System.Data.OracleClient 命名空間中。 lOLEDB l “Provider=OraOLEDB.1; Data Source=ds; User ID=system; Password=manager”

Microsoft .NET Framework Data Provider for Oracle lMicrosoft .NET Framework Data Provider for Oracle是一個.NET Framework的組件。這個組件為我們使用.NET訪問Oracle資料庫提供了極大的方便。 l這個組件的設計非常類似.NET中內建的Microsoft .NET Framework Data Provider for SQL Server l添加System.Data.OracleClient.dll引用
二、核心類介紹
l.NET for Oracle組件中用於組織類和其他類型的名字空間是System.Data.OracleClient。在此名字空間中,主要包含四個核心類,它們分別是:OracleConnection、OracleCommand、OracleDataReader、OracleDataAdapter。 l可使用 System.Data.OracleClient 命名空間中類的子集來執行 Oracle 預存程序和函數。其具體使用方法幾乎和SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter是一模一樣的。 l添加using System.Data.OracleClient 名稱空間
OracleConnection對象

l//設定連接字串
string connstring="Data Source=eims;user=zbmis;password=zbmis;";
//執行個體化OracleConnection對象
OracleConnection conn=new OracleConnection(connstring); l開啟串連 conn.Open(); l關閉串連conn.Close();

樣本Oracle表

l建立一個名為OracleTypesTable的表
"create table OracleTypesTable (MyVarchar2 varchar2(3000),MyNumber number(28,4)
Primary key ,MyDate date,MyRaw RAW(255))";
l插入一行資料
"insert into OracleTypesTable values ('test',4,to_date('2000-01-11
12:54:01','yyyy-mm-dd hh24:mi:ss'),'0001020304')";

OracleCommand對象

l OracleCommand cmd=conn.CreateCommand(); l 或者: l OracleCommand cmd=new OracleCommand(); l cmd.Connection=conn; lcmd.CommandText="select * from zbmis.OracleTypesTable";

OracleDataReader

l OracleDataReader oracledatareader1=cmd.ExecuteReader();
//讀取資料
while (oracledatareader1.Read()) l {
…. l }

讀取字元資料

l//讀取並顯示第一行第一列的資料
OracleString oraclestring1=oracledatareader1.GetOracleString(0);
Response.Write("OracleString " +oraclestring1.ToString());
讀取數字資料

l//讀取並顯示第一行第二列的資料
OracleNumber oraclenumber1 =oracledatareader1.GetOracleNumber(1);
Response.Write("OracleNumber "+oraclenumber1.ToString());

讀取時間資料

l//讀取並顯示第一行第三列的資料
OracleDateTime oracledatetime1=oracledatareader1.GetOracleDateTime(2);
Response.Write("OracleDateTime " +oracledatetime1.ToString());

讀取位元據

l//讀取並顯示第一行第四列的資料
OracleBinary oraclebinary1=oracledatareader1.GetOracleBinary(3);
if(oraclebinary1.IsNull==false)
{
foreach(byte b in oraclebinary1.Value)
{
Response.Write("byte " +b.ToString());
}
}
三、執行Oracle預存程序

l執行 Oracle 預存程序與執行 SQL Server 預存程序類似。 lOracle 預存程序不能將值作為 RETURN 語句的一部分返回,而只能將其作為 OUT 參數返回。 l除了通過 REF CURSOR 輸出參數以外,您不能返回結果集。 l您只能使用 RETURN 參數檢索 Oracle 函數的傳回值 l下面的步驟說明了如何執行 Oracle 預存程序和檢索它返回的結果。

1.在 HR 架構中建立一個名為 COUNT_JOB_HISTORY 的預存程序,以計算 JOB_HISTORY 表中的記錄數。

2.將 System.Data.OracleClient.dll(用於 Oracle 的 Microsoft .NET 架構資料提供者)的引用添加到項目中。 l

3.使用 using 指令匯入 OracleClient 類中的類型。 using System.Data.OracleClient;

4.建立一個 OracleConnection 對象。 OracleConnection conn = new OracleConnection("Data Source=oracledb; User Id=UserID;Password=Password;");用您的值替換 Oracle 資料庫的名稱、使用者名稱和密碼。

5.建立一個 OracleCommand 對象。將其 Connection 屬性設定為第 4 步中建立的串連。將其 CommandText 設定為預存程序的名稱,並將其 CommandText 屬性設定為 CommandType.StoredProcedure。當您調用第 8 步中介紹的一個 Execute() 方法時,該命令對象將執行指定的預存程序。
OracleCommand cmd = new OracleCommand(); lcmd.Connection = conn; lcmd.CommandText = "COUNT_JOB_HISTORY"; lcmd.CommandType = CommandType.StoredProcedure;

6.建立輸入、輸出和傳回值的 OracleParameter 對象,並將其添加到 OracleCommand 對象的參數集合中。 cmd.Parameters.Add("reccount", OracleType.Number).Direction = ParameterDirection.Output; l
該行代碼是以下兩行代碼的簡寫形式: cmd.Parameters.Add("reccount", OracleType.Number); lcmd.Parameters["reccount"].Direction = ParameterDirection.Output;

如果您要檢索結果集,請建立 DataSet、DataTable 或 DataReader。在本樣本中,我們只是擷取第 6 步中建立的輸出參數中的計數。

使用 OracleCommand 對象的一個 Execute 方法開啟串連並執行預存程序,使用完串連後,不要忘記將其關閉。 lconn.Open(); lcmd.ExecuteNonQuery(); lconn.Close(); l如果您要使用 DataAdapter 來填充 DataTable 或 DataSet,可以依靠 DataAdapter 來開啟和關閉串連。

9.處理結果。在我們的樣本中,可在顯示到控制台的輸出參數中得到記錄數: Console.WriteLine(cmd.Parameters["reccount"].Value);

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.