如何使用 Visual C#.NET 中的 [DataReader 處理多個結果

文章翻譯 文章翻譯
文章編號: 311274 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

這份文件包含泛型函式,您可以使用來處理多個資料錄集以及從預存程序或執行批次 SQL 陳述式傳回其他訊息。

該技巧的描述

ActiveX 資料物件 (ADO) 可以接收來自伺服器的五種不同類型的資料:
  • 資料錄集
  • 動作查詢 (例如 INSERT、 UPDATE、 DELETE,或 SELECT INTO) 被修改的記錄數目
  • 資訊訊息或警告
  • 錯誤訊息
  • 預存程序傳回值和輸出參數
如果您在閱讀批次 SQL 陳述式的結果就可用 NextResult 方法在結果集的下一個結果上放置 DataReader

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Windows 2000 專業版、 Windows 2000 Server Windows 2000 進階伺服器或 Windows NT 4.0 伺服器
  • Microsoft Visual Studio.NET
  • Microsoft SQL Server 7.0 (含) 以後版本
本文假設您已熟悉下列主題:
  • Visual Studio.NET
  • ADO.NET 基本原則及語法

建立專案並加入程式碼

這個範例程式碼會使用 Authors 資料表的 SQL Server Pubs 範例資料庫。
  1. 下列陳述式貼入 SQL 查詢分析器工具或 ISQL 公用程式:
    CREATE PROC MyProc
    AS
        SELECT * FROM Authors
        SELECT * FROM Authors WHERE State = 'CA'
    GO 
    					
  2. 啟動 Visual Studio.NET。
  3. 在 Visual C#.NET 中建立新的 Windows 應用程式專案時。 Form1 是根據預設值加入至專案。
  4. 請確定您的專案包含之 System.Data 命名空間的參考,然後加入這個命名空間的參考,如果不符合。
  5. 在 Form1 上放置 命令 按鈕。將按鈕的 [名稱] 屬性變更為 btnTest,並將 文字 屬性變更為 測試
  6. 使用 using 陳述式 系統System.Data.OleDbSystem.Data.SqlClient 命名空間上讓您不需要限定在稍後的程式碼中的這些命名空間中宣告。將下列程式碼加入至 Form1 的一般宣告區段:
    using System;
    using System.Data.OleDb;
    using System.Data.SqlClient;
    					
  7. 將下列程式碼加入至 btnTest_Click 事件:

    附註您必須將使用者識別碼 < 使用者名稱 > 帳戶值變更為具有適當的權限,才能執行這些作業在資料庫上的帳戶。
        String myConnString  = "User ID=<username>;password=<strong password>;Initial Catalog=pubs;Data Source=myServer";
        SqlConnection myConnection = new SqlConnection(myConnString);
        SqlCommand myCommand = new SqlCommand();
        SqlDataReader myReader ;
    
        myCommand.CommandType = CommandType.StoredProcedure;
        myCommand.Connection = myConnection;
        myCommand.CommandText = "MyProc";
        int RecordCount=0; 
    
        try
        {
            myConnection.Open();
    	myReader = myCommand.ExecuteReader();
    
    	while (myReader.Read())
    	{
     	    //Write logic to process data for the first result.
    	    RecordCount = RecordCount + 1;
    	}
    	MessageBox.Show("Total number of Authors: " + RecordCount.ToString());
    
    	myReader.NextResult();
    	RecordCount = 0;
    
    	while (myReader.Read())
    	{
    	    //Write logic to process data for the second result.
    	    RecordCount = RecordCount + 1;
    	}
    	MessageBox.Show("Authors from California: " + RecordCount.ToString());
        }
        catch(Exception ex) 
        {
           MessageBox.Show(ex.ToString());
        }
        finally
        {
    	myConnection.Close();
        }
    					
  8. 修改連線字串 (myConnString) 做適合您的環境。
  9. 儲存您的專案。在 [偵錯] 功能表上按一下 [開始] 執行您的專案]。
  10. 按一下 [測試]。請注意訊息方塊顯示預存程序傳回的資料。

?考

如需有關呼叫預存程序的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
306574如何呼叫 SQL Server 預存程序在 ASP.NET 中
取得更多資訊有關的錯誤處理按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
308650如何在 Visual C#.NET 中使用 ADO.NET 取得基礎提供者錯誤
如需有關參數和預存程序的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
308621PRB: 輸出參數不會傳回在 Visual C#.NET 中執行 ADO.NET 命令時
ADO.NET 物件和語法的詳細資訊,請參閱以 「 下列 Microsoft.NET Framework 軟體開發套件 (SDK) 文件:
存取使用 ADO.NET 的資料
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

屬性

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

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com