Freigeben über


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.

Get-Help 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 SQL-Befehl, der die an der Datenquelle auszuführenden Anweisungen definiert
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

Wenn Sie die ExecuteReader-Methode aufrufen, stehen die Rückgabewerte und die Ausgabeparameter jedoch erst zur Verfügung, wenn das DataReader-Objekt geschlossen ist.

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();
        }
    }
}

Problembehandlung bei Befehlen

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.

Weitere Informationen: