Gewusst wie: Ausführen einer gespeicherten Prozedur, die keinen Wert zurückgibt
Zum Ausführen einer gespeicherten Prozedur, die keinen Wert zurückgibt, können Sie eine TableAdapter-Abfrage ausführen, die für das Ausführen einer gespeicherten Prozedur konfiguriert ist (z. B. CustomersTableAdapter.UpdateTableData(CustomersDataTable)).
Wenn in Ihrer Anwendung keine TableAdapters verwendet werden, rufen Sie die ExecuteNonQuery-Methode für ein Befehlsobjekt auf und legen seine CommandType-Eigenschaft auf StoredProcedure fest. (Der Begriff "Befehlsobjekt" bezieht sich auf den spezifischen Befehl für den .NET Framework-Datenanbieter, den die Anwendung verwendet. Wenn die Anwendung beispielsweise den .NET Framework-Datenanbieter für SQL Server verwendet, ist das Befehlsobjekt SqlCommand.)
Die folgenden Beispiele veranschaulichen die Ausführung von gespeicherten Prozeduren, die unter Verwendung von TableAdapters oder Befehlsobjekten keinen Wert 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 keine Werte 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 keinen Wert zurückgibt
Öffnen Sie ein Dataset im Dataset-Designer. Weitere Informationen finden Sie unter Gewusst wie: Öffnen eines Datasets im DataSet-Designer.
Erstellen Sie einen TableAdapter, falls noch keiner vorhanden ist. Weitere Informationen zum Erstellen von TableAdapters finden Sie unter Gewusst wie: Erstellen von TableAdapters.
Wenn bereits eine Abfrage für den TableAdapter vorhanden ist, in der eine gespeicherte Prozedur verwendet wird, die keine Werte zurückgibt, 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, um eine neue Abfrage zu erstellen, die keinen Wert zurückgibt.
Klicken Sie mit der rechten Maustaste auf den gewünschten TableAdapter, und verwenden Sie das Kontextmenü, um eine Abfrage hinzuzufügen.
Der Konfigurations-Assistent für TableAdapter-Abfragen wird geöffnet.
Wählen Sie Vorhandene gespeicherte Prozedur verwenden aus, und klicken Sie auf Weiter.
Wählen Sie eine gespeicherte Prozedur aus der Dropdownliste aus, und klicken Sie dann auf Weiter.
Wählen Sie die Option Kein Wert aus, und klicken Sie auf Weiter.
Geben Sie einen Namen für die Abfrage an.
Klicken Sie auf Weiter oder Fertig stellen, um den Assistenten fertig zu stellen. Die Abfrage wird dem TableAdapter hinzugefügt.
Erstellen Sie das Projekt.
So deklarieren Sie eine Instanz des TableAdapter und führen die Abfrage aus
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. Wenn beispielsweise das Dataset SalesDataSet vorliegt, dann ist ein SalesDataSetTableAdapters-Namespace mit dem zugehörigen TableAdapter vorhanden.
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)
Der vollständige Code zum Deklarieren einer Instanz von TableAdapters sowie zum Ausführen der Abfrage sollte folgendermaßen aussehen:
Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter() Dim rowsAffected As Integer rowsAffected = CType(tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI"), Integer)
NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = new NorthwindDataSetTableAdapters.CustomersTableAdapter(); int rowsAffected = tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI");
Ausführen von gespeicherten Prozeduren, die unter Verwendung eines Befehlsobjekts keinen Wert zurückgeben
Das folgende Beispiel veranschaulicht das Erstellen eines Befehls und die Ausführung einer gespeicherten Prozedur, die keinen Wert 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.
So führen Sie eine gespeicherte Prozedur aus, die unter Verwendung eines DataCommand keinen Wert zurückgibt
Fügen Sie den folgenden Code zu einer Methode hinzu, aus der Sie die gespeicherte Prozedur ausführen möchten. Rufen Sie die ExecuteNonQuery-Methode eines Befehls auf, um keinen Wert zurückzugeben (z. B.ExecuteNonQuery).
Dim sqlConnection1 As New SqlConnection("Your Connection String") Dim cmd As New SqlCommand Dim rowsAffected As Integer cmd.CommandText = "StoredProcedureName" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = sqlConnection1 sqlConnection1.Open() rowsAffected = cmd.ExecuteNonQuery() sqlConnection1.Close()
SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); SqlCommand cmd = new SqlCommand(); Int32 rowsAffected; cmd.CommandText = "StoredProcedureName"; cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = sqlConnection1; sqlConnection1.Open(); rowsAffected = cmd.ExecuteNonQuery(); sqlConnection1.Close();
Sicherheit
Die Anwendung muss über die Berechtigung zum Zugreifen auf die Datenbank und zum Ausführen der SQL-Anweisung verfügen.
Siehe auch
Aufgaben
Gewusst wie: Erstellen von TableAdapter-Abfragen
Gewusst wie: Bearbeiten von TableAdapter-Abfragen
Gewusst wie: Füllen eines Datasets mit Daten
Gewusst wie: Festlegen und Abrufen von Parametern für Befehlsobjekte