Freigeben über


Gewusst wie: Ausführen einer gespeicherten Prozedur, die Zeilen zurückgibt

Wenn Sie eine gespeicherte Prozedur ausführen möchten, die Zeilen zurückgibt, können Sie eine TableAdapter-Abfrage ausführen, die für das Ausführen einer gespeicherten Prozedur konfiguriert ist (z. B. CustomersTableAdapter.Fill(CustomersDataTable)).

Wenn in Ihrer Anwendung keine TableAdapters verwendet werden, rufen Sie die ExecuteReader-Methode für ein Befehlsobjekt auf, und legen Sie seine CommandType-Eigenschaft auf StoredProcedure fest. ("Befehlsobjekt" bezieht sich auf einen bestimmten Befehl für den von der Anwendung verwendeten .NET Framework-Datenanbieter. Wenn in Ihrer Anwendung z. B. der .NET Framework-Datenanbieter für SQL Server verwendet wird, lautet das Befehlsobjekt SqlCommand.)

Die folgenden Beispiele veranschaulichen die Ausführung von gespeicherten Prozeduren, die unter Verwendung von TableAdapters oder Befehlsobjekten Zeilen aus einer Datenbank zurückgeben. Weitere Informationen zu Abfragen mit TableAdapters und Befehlen finden Sie unter Auffüllen von Datasets mit Daten.

Tipp

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.

Ausführen von gespeicherten Prozeduren, die unter Verwendung eines TableAdapter Zeilen zurückgeben

Dieses Beispiel veranschaulicht das Erstellen einer TableAdapter-Abfrage mit dem TableAdapter-Abfragekonfigurations-Assistent. Darüber hinaus enthält es Informationen zum Deklarieren einer Instanz des TableAdapter und zum Ausführen der Abfrage.

So erstellen Sie eine gespeicherte Prozedur, die unter Verwendung eines TableAdapter Zeilen zurückgibt

  1. Öffnen Sie ein Dataset im Dataset-Designer. Weitere Informationen finden Sie unter Gewusst wie: Öffnen eines Datasets im DataSet-Designer.

  2. Erstellen Sie einen TableAdapter, falls noch keiner vorhanden ist. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von TableAdapters.

  3. Wenn bereits eine Abfrage für den TableAdapter vorhanden ist, mit der eine gespeicherte Prozedur zur Rückgabe von Zeilen aufgerufen wird, wechseln Sie zum nächsten Vorgang "So deklarieren Sie eine Instanz des TableAdapter und führen die Abfrage aus". Fahren Sie andernfalls mit Schritt 4 fort, und erstellen Sie eine neue Abfrage, mit der eine gespeicherte Prozedur zur Rückgabe von Zeilen aufgerufen wird.

  4. Klicken Sie mit der rechten Maustaste auf den gewünschten TableAdapter, und verwenden Sie das Kontextmenü, um eine Abfrage hinzuzufügen.

    Der TableAdapter-Abfragekonfigurations-Assistent wird geöffnet.

  5. Klicken Sie auf Weiter, und wählen Sie dann Vorhandene gespeicherte Prozedur verwendenaus. Klicken Sie anschließend auf Weiter.

  6. Wählen Sie eine gespeicherte Prozedur aus der Dropdownliste aus, und klicken Sie dann auf Weiter.

  7. Behalten Sie den Standardwert für Tabellendaten bei, und klicken Sie dann auf Weiter.

  8. Geben Sie Namen für alle Methoden an, die Sie erstellen möchten (DataTable füllen-Methode und/oder DataTable zurückgeben-Methode).

  9. Stellen Sie den Assistenten fertig. Die Abfrage wird dem TableAdapter hinzugefügt.

  10. Erstellen Sie das Projekt.

So deklarieren Sie eine Instanz des TableAdapter und führen die Abfrage aus

  1. Deklarieren Sie eine Instanz des TableAdapter, die die auszuführende Abfrage enthält.

    • Zum Erstellen einer Instanz mithilfe von Entwurfszeittools ziehen Sie den gewünschten TableAdapter aus der Toolbox. (Komponenten im Projekt werden jetzt in der Toolbox unter einer Überschrift angezeigt, die mit dem Projektnamen übereinstimmt.) Falls der TableAdapter in der Toolbox nicht angezeigt wird, müssen Sie das Projekt möglicherweise neu erstellen.

      – oder –

    • Um eine Instanz im Code zu erstellen, ersetzen Sie den folgenden Code durch die Namen des DataSet und des TableAdapter.

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      Tipp

      TableAdapters befinden sich nicht tatsächlich in den zugeordneten Datasetklassen. Jedes Dataset besitzt eine entsprechende TableAdapter-Auflistung im eigenen Namespace. Ein Dataset mit der Bezeichnung SalesDataSet verfügt z. B. über einen SalesDataSetTableAdapters-Namespace, der die entsprechenden TableAdapters enthält.

  2. Rufen Sie die Abfrage genauso auf, wie Sie auch alle andere Methoden im Code aufrufen. Die Abfrage ist eine Methode für den TableAdapter. Ersetzen Sie den folgenden Code durch den Namen des TableAdapter und der Abfrage. Darüber hinaus müssen Sie auch alle für die Abfrage erforderlichen Parameter übergeben. Wenn Sie sich nicht sicher sind, ob die Abfrage Parameterangaben erfordert und welche Parameter erforderlich sind, finden Sie die erforderliche Abfragesignatur in IntelliSense. In Abhängigkeit davon, ob für die Abfrage Parameter erforderlich sind, entspricht der Code einem der folgenden Beispiele:

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    TableAdapter.Query(DataTable, Parameters)

    Der vollständige Code zum Deklarieren einer Instanz des TableAdapter sowie zum Ausführen der Abfrage sollte folgendermaßen aussehen:

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    tableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    tableAdapter.FillByCity(northwindDataSet.Customers, "Seattle");
    

Ausführen von gespeicherten Prozeduren, die unter Verwendung eines Befehlsobjekts Zeilen zurückgeben

Das folgende Beispiel veranschaulicht das Erstellen eines Befehls und das Ausführen einer gespeicherten Prozedur, die Zeilen zurückgibt. Informationen zum Festlegen und Abrufen von Parameterwerten für einen Befehl finden Sie unter Gewusst wie: Festlegen und Abrufen von Parametern für Befehlsobjekte.

In diesem Beispiel wird das SqlCommand-Objekt verwendet, und Folgendes ist erforderlich:

  • Verweise auf die Namespaces System, System.Data und System.Xml.

  • Eine Datenverbindung mit der Bezeichnung SqlConnection1.

  • Eine Tabelle mit der Bezeichnung Customers in der Datenquelle, mit der SqlConnection1 verbunden ist. (Andernfalls benötigen Sie eine gültige SQL-Anweisung für die Datenquelle.)

So führen Sie eine gespeicherte Prozedur aus, die Zeilen programmgesteuert und unter Verwendung eines Befehlsobjekts zurückgibt

  • Fügen Sie den folgenden Code zu einer Methode hinzu, aus der Sie den Code ausführen möchten. Die Zeilen werden zurückgegeben, indem Sie die ExecuteReader-Methode des Befehls aufrufen (z. B. ExecuteReader). Die Daten werden in einem DataReader zurückgegeben. Weitere Informationen zum Zugriff auf die in einem DataReader enthaltenen Daten finden Sie unter Abrufen von Daten mit einem 'DataReader' (ADO.NET).

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim reader As SqlDataReader
    
    cmd.CommandText = "StoredProcedureName"
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    reader = cmd.ExecuteReader()
    ' Data is accessible through the DataReader object here.
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    
    cmd.CommandText = "StoredProcedureName";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.
    
    sqlConnection1.Close();
    

Sicherheit

Die Anwendung muss über die entsprechende Berechtigung für den Zugriff auf die Datenbank und das Ausführen der gespeicherten Prozedur verfügen.

Siehe auch

Aufgaben

Gewusst wie: Erstellen von TableAdapter-Abfragen

Gewusst wie: Füllen eines Datasets mit Daten

Gewusst wie: Festlegen und Abrufen von Parametern für Befehlsobjekte

Referenz

SqlCommand.ExecuteReader

OleDbCommand.ExecuteReader

OdbcCommand.ExecuteReader

OracleCommand.ExecuteReader

Konzepte

Auffüllen von Datasets mit Daten