Gewusst wie: Erstellen und Ausführen einer SQL-Anweisung, die keinen Wert zurückgibt

Aktualisiert: November 2007

Zum Ausführen einer SQL-Anweisung, die keinen Wert zurückgibt, können Sie eine TableAdapter-Abfrage ausführen, die so konfiguriert ist, dass sie eine SQL-Anweisung ausführt (beispielsweise CustomersTableAdapter.UpdateTableData(CustomersDataTable)).

Wenn die Anwendung keine TableAdapters verwendet, rufen Sie die ExecuteNonQuery-Methode eines Befehlsobjekts auf, und legen Sie für dessen CommandType-Eigenschaft Text fest. (Mit "Befehlsobjekt" ist der spezielle Befehl für den .NET Framework-Datenprovider gemeint, den die Anwendung verwendet. Wenn die Anwendung beispielsweise den .NET Framework-Datenanbieter für SQL Server verwendet, ist das Befehlsobjekt SqlCommand.)

Die folgenden Beispiele zeigen, wie SQL-Anweisungen ausgeführt werden, die mithilfe von TableAdapter-Objekten oder Befehlsobjekten keinen Datenbankwert zurückgeben. Weitere Informationen zu Abfragen mit TableAdapters und Befehlen finden Sie unter Übersicht über das Füllen von Datasets und Abfragen von Daten.

Ausführen von SQL-Anweisungen, die keine Werte zurückgeben, mit einem TableAdapter

In diesem Beispiel wird gezeigt, wie mithilfe des Konfigurations-Assistent für TableAdapter-Abfragen eine TableAdapter-Abfrage erstellt wird, und anschließend erläutert, wie eine Instanz des TableAdapter deklariert und die Abfrage ausgeführt wird.

Hinweis:

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 Visual Studio-Einstellungen.

So erstellen Sie eine SQL-Anweisung, die keinen Wert zurückgibt, mit einem TableAdapter

  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, sofern noch keiner vorhanden ist. Weitere Informationen zum Erstellen von TableAdapters finden Sie unter Gewusst wie: Erstellen von TableAdapters.

  3. Wenn im TableAdapter bereits eine Abfrage vorhanden ist, die unter Verwendung einer SQL-Anweisung keinen Wert zurückgibt, fahren Sie mit der nächsten Verfahrensanweisung im Abschnitt "So deklarieren Sie eine Instanz des TableAdapter und führen die Abfrage aus" fort. Andernfalls fahren Sie mit Schritt 4 fort, um eine neue Abfrage zu erstellen, die keinen Wert zurückgibt.

  4. Klicken Sie mit der rechten Maustaste auf den gewünschten TableAdapter, und fügen Sie über das Kontextmenü eine Abfrage hinzu.

    Der Konfigurations-Assistent für TableAdapter-Abfragen wird geöffnet.

  5. Behalten Sie die Standardwerte von SQL-Anweisungen verwenden bei, und klicken Sie dann auf Weiter.

  6. Wählen Sie die Option UPDATE, INSERT oder DELETE aus, und klicken Sie dann auf Weiter.

  7. Geben Sie die SQL-Anweisung ein, oder erstellen Sie mit Unterstützung des Abfrage-Generators eine solche Anweisung. Klicken Sie anschließend auf Weiter.

  8. Benennen Sie die Abfrage.

  9. Beenden Sie den Assistenten. 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, der 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, muss das Projekt möglicherweise neu erstellt werden.

      – oder –

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

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      Hinweis:

      TableAdapters befinden sich eigentlich nicht innerhalb ihrer verknüpften Dataset-Klassen. Jedes Dataset verfügt im eigenen Namespace über eine entsprechende TableAdapter-Auflistung. Bei einem Dataset mit dem Namen SalesDataSet würde der entsprechende Namespace mit den TableAdapters SalesDataSetTableAdapters heißen.

  2. Rufen Sie die Abfrage genauso auf, wie Sie im Code jede andere Methode aufrufen. Die Abfrage ist eine Methode des TableAdapter. Ersetzen Sie den folgenden Code durch die 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. Je nachdem, ob die Abfrage Parameter verarbeitet oder nicht, sieht der Code in etwa wie folgt aus:

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    Abfragen, von denen angenommen wird, dass sie keinen Wert zurückgeben, geben doch einen Wert zurück – eine ganze Zahl, die die Anzahl der von der Abfrage betroffenen Zeilen enthält. Der vollständige Code zum Deklarieren einer TableAdapter-Instanz und zum Ausführen einer Abfrage müsste ungefähr wie folgt 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 SQL-Anweisungen, die keinen Wert zurückgeben, mit einem Befehlsobjekt

Im folgenden Beispiel wird gezeigt, wie ein Befehl erstellt und eine SQL-Anweisung ausgeführt wird, 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 vorausgesetzt:

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

  • Eine Datenverbindung mit dem Namen SqlConnection1.

  • Eine Tabelle mit dem Namen Customers in der Datenquelle, mit der SqlConnection1 verbunden ist. (Andernfalls ist eine gültige SQL-Anweisung für die Datenquelle erforderlich.)

So führen Sie mit einem DataCommand eine SQL-Anweisung aus, die keinen Wert zurückgibt

  • Fügen Sie den folgenden Code einer Methode hinzu, über die Sie die SQL-Anweisung ausführen möchten. Rufen Sie die ExecuteNonQuery-Methode eines Befehls auf, wenn kein Wert zurückgegeben werden soll (z. B. SqlCommand.ExecuteNonQuery).

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim rowsAffected As Integer
    
    cmd.CommandText = "UPDATE Customers SET ContactTitle = 'Sales Manager' WHERE CustomerID = 'ALFKI'"
    cmd.CommandType = CommandType.Text
    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 = "UPDATE Customers SET ContactTitle = 'Sales Manager' WHERE CustomerID = 'ALFKI'";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    rowsAffected = cmd.ExecuteNonQuery();
    
    sqlConnection1.Close();
    

Sicherheit

Die Anwendung muss über die entsprechende Berechtigung für den Zugriff auf die Datenbank und das 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

Konzepte

Übersicht über das Füllen von Datasets und Abfragen von Daten

Referenz

SqlCommand.ExecuteNonQuery

OleDbCommand.ExecuteNonQuery

OdbcCommand.ExecuteNonQuery

OracleCommand.ExecuteNonQuery