Freigeben über


SqlCommand.ExecuteNonQuery Methode

Definition

Führt eine Transact-SQL-Anweisung für die Verbindung aus und gibt die Anzahl der betroffenen Zeilen zurück.

public:
 override int ExecuteNonQuery();
public override int ExecuteNonQuery ();
override this.ExecuteNonQuery : unit -> int
Public Overrides Function ExecuteNonQuery () As Integer

Gibt zurück

Die Anzahl der betroffenen Zeilen.

Ausnahmen

Ein SqlDbType anderes als Binary oder VarBinary wurde verwendet, wenn Value auf Stream festgelegt wurde. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

- oder -

Ein SqlDbType anderes als Char, NChar, NVarChar, VarChar oder Xml wurde verwendet, wenn Value auf TextReader festgelegt wurde.

Oder

Ein SqlDbType anderes als Xml wurde verwendet, wenn Value auf XmlReader festgelegt wurde.

Beim Ausführen des Befehls für eine gesperrte Zeile ist eine Ausnahme aufgetreten. Diese Ausnahme tritt in Microsoft .NET Framework 1.0 nicht auf.

- oder -

Bei einem Streamingvorgang ist ein Timeout aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Während eines Streamingvorgangs ist ein Fehler in einem Stream - XmlReader oder TextReader -Objekt aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Die SqlConnection wurde während eines Streamingvorgangs geschlossen oder getrennt. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Das Stream - XmlReader oder TextReader -Objekt wurde während eines Streamingvorgangs geschlossen. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Beispiele

Im folgenden Beispiel wird ein SqlCommand erstellt und dann mit ExecuteNonQueryausgeführt. Das Beispiel wird eine Zeichenfolge übergeben, bei der es sich um eine Transact-SQL-Anweisung (z. B. UPDATE, INSERT oder DELETE) und eine Zeichenfolge handelt, die zum Herstellen einer Verbindung mit der Datenquelle verwendet werden soll.

// <Snippet1>
using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandCS
{
    class Program
    {
        static void Main()
        {
            string str = "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
            string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
            CreateCommand(qs, str);
        }
        private static void CreateCommand(string queryString,
            string connectionString)
        {
            using (SqlConnection connection = new SqlConnection(
                       connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
}
// </Snippet1>

Hinweise

Sie können die ExecuteNonQuery verwenden, um Katalogvorgänge auszuführen (z. B. abfragen der Struktur einer Datenbank oder Erstellen von Datenbankobjekten wie Tabellen) oder um die Daten in einer Datenbank zu ändern, ohne ein DataSet zu verwenden, indem Sie UPDATE-, INSERT- oder DELETE-Anweisungen ausführen.

Obwohl der ExecuteNonQuery keine Zeilen zurückgibt, werden alle Ausgabeparameter oder Rückgabewerte, die Parametern zugeordnet sind, mit Daten aufgefüllt.

Bei den Anweisungen UPDATE, INSERT und DELETE ist der Rückgabewert die Anzahl der vom Befehl betroffenen Zeilen. Bei allen anderen Anweisungstypen ist der Rückgabewert -1. Wenn ein Trigger für eine Tabelle vorhanden ist, die eingefügt oder aktualisiert wird, enthält der Rückgabewert die Anzahl der Zeilen, die vom Einfüge- oder Aktualisierungsvorgang betroffen sind, und die Anzahl der Zeilen, die vom Trigger oder den Triggern betroffen sind. Wenn SET NOCOUNT ON für die Verbindung festgelegt wird (vor oder als Teil der Ausführung des Befehls oder als Teil eines Triggers, der durch die Ausführung des Befehls initiiert wird), tragen die von einzelnen Anweisungen betroffenen Zeilen nicht mehr zur Anzahl der betroffenen Zeilen bei, die von dieser Methode zurückgegeben werden. Wenn keine Anweisungen erkannt werden, die zur Anzahl beitragen, ist der Rückgabewert -1. Wenn ein Rollback erfolgt, ist der Rückgabewert ebenfalls -1.

Gilt für: