JAK: Obsługiwanie wielu wyników za pomocą obiektu DataReader w programie Visual C# .NET

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 311274 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Ten artykuł został opublikowany wcześniej pod numerem PL311274
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

Ten artykuł zawiera ogólną funkcję, której można użyć do przetworzenia wielu zestawów rekordów oraz innych wiadomości zwracanych przez procedury przechowywane lub wykonanie wsadowych instrukcji SQL.

Opis techniki

Obiekty ActiveX Data Objects (ADO) mogą otrzymywać z serwera pięć różnych typów danych:
  • Zestaw rekordów
  • Liczba rekordów modyfikowanych przez kwerendę funkcjonalną (taką jak INSERT, UPDATE, DELETE lub SELECT INTO)
  • Komunikat informacyjny lub ostrzeżenie
  • Komunikat o błędzie
  • Wartości zwrócone oraz parametry wyjściowe procedur przechowywanych
Odczytując wynik działania wsadowych instrukcji SQL, można użyć metody NextResult do umieszczenia obiektu DataReader jako następnego wyniku w zestawie wyników.

Wymagania

Poniżej przedstawiono listę zalecanego sprzętu, oprogramowania, infrastruktury sieciowej i dodatków service pack:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server lub Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 7.0 lub nowszy
W tym artykule zakłada się, że użytkownik jest zaznajomiony z następującymi tematami:
  • Visual Studio .NET
  • Podstawy i składnia technologii ADO.NET

Tworzenie projektu i dodawanie kodu

W przykładowym kodzie użyto tabeli Authors z przykładowej bazy danych Pubs programu SQL Server.
  1. Wklej następujące instrukcje do narzędzia SQL Query Analyzer lub narzędzia ISQL:
    CREATE PROC MyProc
    AS
        SELECT * FROM Authors
        SELECT * FROM Authors WHERE State = 'CA'
    GO 
  2. Otwórz program Visual Studio .NET.
  3. Utwórz nowy projekt Windows Application w programie Visual C# .NET. Domyślnie do projektu dodawany jest formularz Form1.
  4. Upewnij się, że projekt zawiera odwołanie do obszaru nazw System.Data, a jeśli nie zawiera, dodaj je.
  5. Umieść przycisk Command na formularzu Form1. Zmień właściwość Name przycisku na btnTest i zmień właściwość Text na Test.
  6. Użyj instrukcji using dla obszarów nazw System, System.Data.OleDb oraz System.Data.SqlClient, aby nie trzeba było w późniejszym czasie kwalifikować obszarów nazw w kodzie. Dodaj następujący kod do sekcji General Declarations formularza Form1:
    using System;
    using System.Data.OleDb;
    using System.Data.SqlClient;
  7. Dodaj następujący kod do zdarzenia btnTest_Click:
        String myConnString  = "User ID=sa;password=sa;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())
    	{
     	    //Przetwarzanie danych do uzyskania pierwszego wyniku.
    	    RecordCount = RecordCount + 1;
    	}
    	MessageBox.Show("Całkowita liczba autorów: " + RecordCount.ToString());
    
    	myReader.NextResult();
    	RecordCount = 0;
    
    	while (myReader.Read())
    	{
    	    //Przetwarzanie danych do uzyskania drugiego wyniku.
    	    RecordCount = RecordCount + 1;
    	}
    	MessageBox.Show("Autorzy z Kalifornii: " + RecordCount.ToString());
        }
        catch(Exception ex) 
        {
           MessageBox.Show(ex.ToString());
        }
        finally
        {
    	myConnection.Close();
        }
  8. Zmodyfikuj ciąg Connection (myConnString) w sposób odpowiedni dla wybranego środowiska.
  9. Zapisz projekt. W menu Debug kliknij przycisk Start, a następnie uruchom projekt.
  10. Kliknij przycisk Test. Zauważ, że w oknach komunikatów zostaną wyświetlone dane zwrócone przez procedury przechowywane.

Materiały referencyjne

Aby uzyskać dodatkowe informacje dotyczące wywoływania procedur przechowywanych, kliknij numer artykułu poniżej w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
306574 HOW TO: Call SQL Server Stored Procedures in ASP.NET
Aby uzyskać dodatkowe informacje dotyczące obsługi błędów, kliknij numer artykułu poniżej w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
308650 HOW TO: Obtain Underlying Provider Errors by Using ADO.NET in Visual C# .NET
Aby uzyskać dodatkowe informacje dotyczące parametrów oraz procedur przechowywanych, kliknij numer artykułu poniżej w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
308621 PRB: Output Parameters Are Not Returned When You Run an ADO.NET Command in Visual C# .NET
Aby uzyskać dodatkowe informacje dotyczące obiektów i składni technologii ADO.NET, przeczytaj następującą dokumentację zestawu SDK (Software Development Kit) architektury Microsoft .NET Framework:
Accessing Data with ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

Właściwości

Numer ID artykułu: 311274 - Ostatnia weryfikacja: 13 maja 2007 - Weryfikacja: 2.2
Informacje zawarte w tym artykule dotyczą:
  • Microsoft ADO .NET (dołączone do architektury .NET Framework)
  • Microsoft Visual C# .NET 2002 Standard Edition
Słowa kluczowe: 
kbhowto kbhowtomaster kbgrpdsvbdb kbgrpdsmdac KB311274

Przekaż opinię

 

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