Artikel-ID: 309490 - Geändert am: Sonntag, 13. Mai 2007 - Version: 1.3

SO WIRD'S GEMACHT: Bearbeiten mehrerer Ergebnisse mit dem DataReader in Visual Basic .NET

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel wurde zuvor veröffentlicht unter D309490
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
309490  (http://support.microsoft.com/kb/309490/en-us/ ) HOW TO: Handle Multiple Results Using the DataReader in Visual Basic .NET
Eine Version dieses Artikels für Microsoft Visual C# .NET finden Sie unter 311274  (http://support.microsoft.com/kb/311274/DE/ ) .
Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
http://support.microsoft.com/ (http://support.microsoft.com/)
Achtung: Die in diesem Artikel aufgeführten Codebeispiele basieren auf den Beispieldatenbanken der englischsprachigen Versionen von Microsoft SQL Server oder Microsoft Access. Sie können diese Beispiele nicht mit den deutschsprachigen Beispieldatenbanken von SQL Server oder Access verwenden. Verwenden Sie entweder die englischsprachigen Versionen dieser Datenbanken, oder passen Sie die Codebeispiele so an, dass sie auf die deutschen Beispieldatenbanken und die deutschsprachigen Datenbankobjekte verweisen.
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Auf dieser Seite

Alles erweitern | Alles schließen

Zusammenfassung

Dieser Artikel enthält eine generische Funktion, die Sie verwenden können, um mehrere Recordsets und andere Meldungen zu verarbeiten, die von gespeicherten Prozeduren oder der Ausführung von Batch-SQL-Anweisungen zurückgegeben werden.

Beschreibung des Verfahrens

ActiveX Data Objects (ADO) können fünf verschiedene Datentypen vom Server empfangen:
  • Recordset
  • Anzahl der Datensätze, die durch eine Aktionsabfrage (wie INSERT, UPDATE, DELETE oder SELECT INTO) geändert werden.
  • Informations- oder Warnmeldung
  • Fehlermeldung
  • Rückgabewerte und Ausgabeparameter von gespeicherten Prozeduren
Wenn Sie die Ergebnisse einer Batch-SQL-Anweisung lesen, können Sie die NextResult-Methode verwenden, um den DataReader auf das nächste Ergebnis in der Ergebnismenge zu setzen.

Voraussetzungen

Im Folgenden werden die empfohlene Hardware, Software, Netzwerkinfrastruktur und Service Packs beschrieben, die Sie benötigen:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oder Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 7.0 oder höher
Dieser Artikel setzt voraus, dass Sie mit folgenden Themen vertraut sind:
  • Visual Studio .NET
  • ADO.NET-Grundlagen und -Syntax

Erstellen des Projekts und Hinzufügen des Codes

In diesem Beispielcode wird die Tabelle Autoren der Pubs-Beispieldatenbank verwendet.
  1. Fügen Sie die folgenden Anweisungen in den SQL Query Analyzer oder das ISQL-Hilfsprogramm ein:
    CREATE PROC MyProc
    AS
        SELECT * FROM Authors
        SELECT * FROM Authors WHERE State = 'CA'
    GO 
  2. Öffnen Sie Visual Studio .NET.
  3. Erstellen Sie ein neues Visual Basic Windows-Anwendungsprojekt.
  4. Stellen Sie sicher, dass Ihr Projekt eine Referenz auf den System.Data-Namespace enthält. Wenn dies nicht der Fall ist, fügen Sie eine Referenz zu diesem Namespace hinzu.
  5. Setzen Sie eine Command-Schaltfläche auf Form1. Ändern Sie die Eigenschaft Name der Schaltfläche in btnTest und die Eigenschaft Text in Test.
  6. Wenden Sie die Anweisung Imports auf die Namespaces System, System.Data.OleDb und System.Data.SqlClient an, damit Sie später in Ihrem Code keine Deklarationen in diesen Namespaces bestimmen müssen. Fügen Sie den folgenden Code zu dem Abschnitt Allgemeine Deklarationen von Form1 hinzu:
    Imports System
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
  7. Fügen Sie den folgenden Code nach dem Bereich "Vom Windows Form-Designer generierter Code" in das Codefenster ein:
        Private Sub btnTest_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles btnTest.Click
            Dim myConnString As String = _
                    "User ID=sa;Password=sa;Initial Catalog=pubs;Data Source=myServer"
            Dim myConnection As New SqlConnection(myConnString)
            Dim myCommand As New SqlCommand()
            Dim myReader As SqlDataReader
    
            myCommand.CommandType = CommandType.StoredProcedure
            myCommand.Connection = myConnection
            myCommand.CommandText = "MyProc"
            Dim RecordCount As Integer
    
            Try
                myConnection.Open()
                myReader = myCommand.ExecuteReader
                While myReader.Read()
                    'Write logic to process data for the first result.
                    RecordCount = RecordCount + 1
                End While
                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
                End While
                 MessageBox.Show("Authors from California: " & RecordCount.ToString)
            Catch ex As Exception
                MessageBox.Show(ex.ToString())
            Finally
                myConnection.Close()
            End Try
        End Sub
  8. Ändern Sie die Verbindungszeichenfolge (myConnString) entsprechend Ihrer Umgebung.
  9. Speichern Sie das Projekt. Klicken Sie im Menü Debuggen auf Starten und führen Sie das Projekt aus.
  10. Klicken Sie auf Testen. Beachten Sie, dass die Meldungsfelder die von der gespeicherten Prozedur zurückgegebenen Daten anzeigen.

Informationsquellen

Weitere Informationen zum Aufrufen von gespeicherten Prozeduren finden Sie in folgendem Artikel der Microsoft Knowledge Base:
306574  (http://support.microsoft.com/kb/306574/DE/ ) HOW TO: Call SQL Server Stored Procedures in ASP.NET
Weitere Informationen zur Fehlerbehandlung finden Sie in folgendem Artikel der Microsoft Knowledge Base:
308043  (http://support.microsoft.com/kb/308043/DE/ ) HOW TO: Obtain Underlying Provider Errors Using ADO.NET in Visual Basic .NET
Weitere Informationen zu Parametern und gespeicherten Prozeduren finden Sie in folgendem Artikel der Microsoft Knowledge Base:
308051  (http://support.microsoft.com/kb/308051/DE/ ) PRB: Output Parameters Are Not Returned When You Run an ADO.NET Command in Visual Basic .NET
Weitere Informationen zu ADO.NET-Objekten und -Syntax finden Sie unter dem folgenden Thema in der Microsoft .NET Framework Software Development Kit (SDK)-Dokumentation:
Accessing Data with ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx)

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ADO.NET 1.0
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Keywords: 
kbgrpdsmdac kbgrpdsvbdb kbhowtomaster KB309490
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.