您目前已離線,請等候您的網際網路重新連線

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

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:311274
本文章的有 Microsoft Visual Basic.NET] 版本請參閱 309490

本文參照下列 Microsoft.NET Framework 類別庫命名空間:
  • System.Data.OleDb
  • System.Data.SqlClient

在此工作

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

back to the top

該技巧的描述

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

back to the top

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • 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 基本原則及語法
back to the top

建立專案並加入程式碼

這個範例程式碼會使用 Authors 資料表的 SQL Server Pubs 範例資料庫。
  1. 下列陳述式貼入 SQL 查詢分析器工具或 ISQL 公用程式:
    CREATE PROC MyProcAS    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. 按一下 [測試]。請注意訊息方塊顯示預存程序傳回的資料。
back to the top
参考
如需有關呼叫預存程序的詳細資訊,按一下下面的文件編號,檢視 「 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) 文件:back to the top
NextResult

警告:本文為自動翻譯

內容

文章識別碼:311274 - 最後檢閱時間:05/13/2007 05:02:37 - 修訂: 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
意見反應