Ausführen eines Befehls

Gilt für: .NET Framework .NET .NET Standard

Herunterladen von ADO.NET

Der Microsoft SqlClient-Datenanbieter für SQL Server verfügt über ein SqlCommand-Objekt, das Elemente von DbCommand erbt. Dieses Objekt stellt Methoden zum Ausführen von Befehlen basierend auf dem Befehlstyp und dem gewünschten Rückgabewert zur Verfügung, wie in der folgenden Tabelle beschrieben.

Befehl Rückgabewert
ExecuteReader Gibt ein DataReader-Objekt zurück.
ExecuteScalar Gibt einen einzelnen Skalarwert zurück.
ExecuteNonQuery Führt einen Befehl aus, der keine Zeilen zurückgibt.
ExecuteXMLReader Gibt einen XmlReader zurück. Nur für ein SqlCommand-Objekt verfügbar.

Jedes stark typisierte Befehlsobjekt unterstützt auch eine CommandType-Enumeration, die angibt, wie eine Befehlszeichenfolge interpretiert wird. Nähere Informationen dazu finden Sie in der folgenden Tabelle.

CommandType Beschreibung
Text Ein SQL-Befehl, der die Anweisungen definiert, die in der Datenquelle ausgeführt werden sollen.
StoredProcedure Name der gespeicherten Prozedur Mit der Parameters-Befehlseigenschaft können Sie auf die Eingabe- und Ausgabeparameter sowie auf die Rückgabewerte zugreifen, und dies unabhängig davon, welche Execute-Methode aufgerufen wird.
TableDirect Name der Tabelle

Wichtig

Bei Verwendung von ExecuteReader sind Rückgabewerte und Ausgabeparameter erst verfügbar, wenn DataReader geschlossen wird.

Beispiel

Das folgende Codebeispiel zeigt, wie durch Festlegen seiner Eigenschaften ein SqlCommand-Objekt zum Ausführen einer gespeicherten Prozedur erstellt werden kann. Ein SqlParameter-Objekt wird zur Angabe des Eingabeparameters für die gespeicherte Prozedur verwendet. Der Befehl wird mit der ExecuteReader-Methode ausgeführt, und die Ausgabe des SqlDataReader wird im Konsolenfenster angezeigt.

static void GetSalesByCategory(string connectionString,
    string categoryName)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // Create the command and set its properties.
        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandText = "SalesByCategory";
        command.CommandType = CommandType.StoredProcedure;

        // Add the input parameter and set its properties.
        SqlParameter parameter = new SqlParameter();
        parameter.ParameterName = "@CategoryName";
        parameter.SqlDbType = SqlDbType.NVarChar;
        parameter.Direction = ParameterDirection.Input;
        parameter.Value = categoryName;

        // Add the parameter to the Parameters collection.
        command.Parameters.Add(parameter);

        // Open the connection and execute the reader.
        connection.Open();
        using (SqlDataReader reader = command.ExecuteReader())
        {
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Console.WriteLine("{0}: {1:C}", reader[0], reader[1]);
                }
            }
            else
            {
                Console.WriteLine("No rows found.");
            }
            reader.Close();
        }
    }
}

Befehle zur Fehlerbehebung

Mit dem Microsoft SqlClient-Datenanbieter für SQL Server werden Diagnoseindikatoren hinzugefügt, mit denen Sie zeitweilige Probleme aufgrund von Fehlern bei der Befehlsausführung erkennen können. Weitere Informationen finden Sie unter Diagnoseindikatoren in SqlClient.