文章編號: 308072 - 上次校閱: 2004年7月14日 - 版次: 2.2

如何填滿資料集從 Oracle 預存程序 Visual Basic.NET 中使用 OLE DB.NET 資料提供者

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您,如何從 Oracle 預存程序結果集使用填滿 DataSet 物件。資料集 物件會中央支援中斷連線,分佈使用 ADO.NET 資料案例。資料集 是提供一個一致、 關聯式程式設計模型無論資料來源的資料的記憶體常駐表示。資料集 表示一組完整的包括相關的資料表、 條件約束及資料表間的關聯性的資料。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Windows XP]、 [Windows 2000] 或 [Windows NT 4.0 Service Pack 6a
  • Microsoft 資料存取元件 (MDAC) 2.6 或更新的版本
  • 先知 8.0 伺服器或更新版本
  • Microsoft Visual Studio.NET
  • 用戶端電腦上安裝 Oracle 用戶端
本文假設您已熟悉下列主題:
  • 在 Oracle 中的資料定義語言 (DDL) 查詢
  • Visual Basic.NET 語法
  • ActiveX 資料物件 (ADO)

在 Oracle 資料庫中建立封裝的步驟

  1. 使用下列程式碼,建立名為 Person 的資料表:
    CREATE TABLE person
              (ssn     NUMBER(9) PRIMARY KEY,
               fname   VARCHAR2(15),
               lname   VARCHAR2(20));
    
             INSERT INTO person VALUES(555662222,'Sam','Goodwin');
    
             INSERT INTO person VALUES(555882222,'Kent','Clark');
    
             INSERT INTO person VALUES(666223333,'Sally','Burnett');
    
             COMMIT;
    					
  2. 使用下列程式碼來建立封裝標頭:
    CREATE OR REPLACE PACKAGE packperson
             AS
                 TYPE tssn is TABLE of  NUMBER(10)
                 INDEX BY BINARY_INTEGER;
                 TYPE tfname is TABLE of VARCHAR2(15)
                 INDEX BY BINARY_INTEGER;
                 TYPE tlname is TABLE of VARCHAR2(20)
                 INDEX BY BINARY_INTEGER;
    
                 PROCEDURE allperson
                         (ssn    OUT     tssn,
                          fname  OUT     tfname,
                          lname  OUT     tlname);
               
              END packperson;
              / 
    					
  3. 使用下列程式碼來建立封裝內文:
    CREATE OR REPLACE PACKAGE BODY packperson
             AS
    
             PROCEDURE allperson
                         (ssn    OUT     tssn,
                          fname  OUT     tfname,
                          lname  OUT     tlname)
             IS
                 CURSOR person_cur IS
                         SELECT ssn, fname, lname
                         FROM person;
    
                 percount NUMBER DEFAULT 1;
    
             BEGIN
                 FOR singleperson IN person_cur
                 LOOP
                         ssn(percount) := singleperson.ssn;
                         fname(percount) := singleperson.fname;
                         lname(percount) := singleperson.lname;
                         percount := percount + 1;
                 END LOOP;
             END;
    
             END;
             / 
    					

建立 Visual Basic.NET 應用程式的步驟

  1. 建立新的 Visual Basic.NET Windows 應用程式。Form1 加入到應用程式上,根據預設值。
  2. DataGrid 控制項和 Button 控制項拖放至 [Form1 控制項。DataGrid1Button1 加入到 Form1 的預設值。
  3. 為第一行程式碼中加入下列程式碼視窗:
    Imports System.Data.OleDb
    					
  4. Button1_Click 事件中加入下列程式碼:
    Dim cnOra As New OleDbConnection("Provider=MSDAORA;Data Source=myOracleServer;" & _
                                     "user id=myUID;password=myPWD;Persist Security info=False;")
    
            Dim cmdPerson As New OleDbCommand _
            ("{call packPerson.allPerson({resultset 3, ssn, fname, lname})}", cnOra)
            cmdPerson.CommandType = CommandType.Text
    
            Dim daPerson As New OleDbDataAdapter(cmdPerson)
    
            cnOra.Open()
    
            Dim ds As New DataSet()
            Try
                daPerson.Fill(ds, "Persons")
                Me.DataGrid1.DataSource = ds.Tables("Persons")
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
            cnOra.Close()
    					
  5. 修改 OleDbConnection 字串,使之適用於您的環境。
  6. 按下 F5 鍵以建置並執行應用程式。
  7. 按一下 [Button1]。結果應該會出現在 DataGrid 控制項中。
注意: 由於唯一 Oracle 8.0 和更新版本支援 resultsets 擷取和執行預存程序,您必須使用 Oracle 8 x 伺服器來執行這個應用程式。

?考

如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
176086? (http://support.microsoft.com/kb/176086/EN-US/ ) 如何從 Oracle 擷取資料錄集的預存程序使用 ADO
308073? (http://support.microsoft.com/kb/308073/EN-US/ ) 如何使用一個 DataReader 針對 Oracle Visual Basic.NET 中預存程序

這篇文章中的資訊適用於:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
關鍵字:?
kbmt kbhowtomaster kbsystemdata KB308072 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:308072? (http://support.microsoft.com/kb/308072/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。