Aktualisieren von Daten in einer Datenquelle
Gilt für: .NET Framework .NET .NET Standard
SQL-Anweisungen, mit denen Daten geändert werden (z. B. INSERT, UPDATE oder DELETE), geben keine Zeilen zurück. Ähnlich verhält es sich mit vielen gespeicherten Prozeduren, die zwar eine Aktion durchführen, jedoch keine Zeilen zurückgeben. Zum Ausführen von Befehlen, die keine Zeilen zurückgeben, erstellen Sie ein Command-Objekt mit dem entsprechenden SQL-Befehl und ein Connection-Objekt, einschließlich der erforderlichen Parameter. Führen Sie den Befehl mit der ExecuteNonQuery-Methode des SqlCommand-Objekts aus.
Hinweis
Die ExecuteNonQuery-Methode gibt eine ganze Zahl zurück, die der Anzahl von Zeilen entspricht, auf die die ausgeführte Anweisung oder gespeicherte Prozedur angewendet wurde. Wenn mehrere Anweisungen ausgeführt werden, entspricht der zurückgegebene Wert der Summe der Datensätze, die von allen ausgeführten Anweisungen betroffen sind.
Beispiel
Im folgenden Codebeispiel wird eine INSERT-Anweisung ausgeführt, um einen Datensatz mithilfe von ExecuteNonQuery in einer Datenbank einzufügen.
// Assumes connection is a valid SqlConnection.
connection.Open();
string queryString = "INSERT INTO Customers " +
"(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";
SqlCommand command = new SqlCommand(queryString, connection);
Int32 recordsAffected = command.ExecuteNonQuery();
Im folgenden Codebeispiel wird die gespeicherte Prozedur ausgeführt, die mit dem Beispielcode unter Ausführen von Katalogoperationen erstellt wurde. Da von der gespeicherten Prozedur keine Zeilen zurückgegeben werden, wird die ExecuteNonQuery-Methode verwendet. Die gespeicherte Prozedur empfängt jedoch einen Eingabeparameter und gibt einen Ausgabeparameter und einen Rückgabewert zurück.
// Assumes command is a valid SqlCommand with an open connection.
command.CommandText = "InsertCategory";
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = command.Parameters.Add("@RowCount", SqlDbType.Int);
parameter.Direction = ParameterDirection.ReturnValue;
parameter = command.Parameters.Add("@CategoryName", SqlDbType.NChar, 15);
parameter = command.Parameters.Add("@Identity", SqlDbType.Int);
parameter.Direction = ParameterDirection.Output;
command.Parameters["@CategoryName"].Value = "New Category";
command.ExecuteNonQuery();
Int32 categoryID = (Int32) command.Parameters["@Identity"].Value;
Int32 rowCount = (Int32) command.Parameters["@RowCount"].Value;