Ausführen eines BefehlsExecuting a Command

Jeder in .NET Framework enthaltene .NET Framework-Datenanbieter besitzt ein eigenes Befehlsobjekt, das von DbCommand erbt.Each .NET Framework data provider included with the .NET Framework has its own command object that inherits from DbCommand. Der .NET Framework-Datenanbieter für OLE DB enthält ein OleDbCommand-Objekt, der .NET Framework-Datenanbieter für SQL Server enthält ein SqlCommand-Objekt, der .NET Framework-Datenanbieter für ODBC enthält ein OdbcCommand-Objekt, und der .NET Framework-Datenanbieter für Oracle enthält ein OracleCommand-Objekt.The .NET Framework Data Provider for OLE DB includes an OleDbCommand object, the .NET Framework Data Provider for SQL Server includes a SqlCommand object, the .NET Framework Data Provider for ODBC includes an OdbcCommand object, and the .NET Framework Data Provider for Oracle includes an OracleCommand object. Jedes dieser Objekte macht Methoden für das Ausführen von Befehlen auf der Grundlage des Befehlstyps und des gewünschten Rückgabewerts verfügbar. Die folgende Tabelle enthält eine Beschreibung der einzelnen Befehle.Each of these objects exposes methods for executing commands based on the type of command and desired return value, as described in the following table.

BefehlCommand RückgabewertReturn Value
ExecuteReader Gibt ein DataReader-Objekt zurück.Returns a DataReader object.
ExecuteScalar Gibt einen einzelnen Skalarwert zurück.Returns a single scalar value.
ExecuteNonQuery Führt einen Befehl aus, der keine Zeilen zurückgibt.Executes a command that does not return any rows.
ExecuteXMLReader Gibt einen XmlReader zurück.Returns an XmlReader. Nur für ein SqlCommand-Objekt verfügbar.Available for a SqlCommand object only.

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.Each strongly typed command object also supports a CommandType enumeration that specifies how a command string is interpreted, as described in the following table.

CommandTypeCommandType BeschreibungDescription
Text SQL-Befehl, der die an der Datenquelle auszuführenden Anweisungen definiertAn SQL command defining the statements to be executed at the data source.
StoredProcedure Der Name der gespeicherten Prozedur.The name of the stored procedure. 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.You can use the Parameters property of a command to access input and output parameters and return values, regardless of which Execute method is called. Wenn Sie die ExecuteReader-Methode aufrufen, stehen die Rückgabewerte und die Ausgabeparameter jedoch erst zur Verfügung, wenn das DataReader-Objekt geschlossen ist.When using ExecuteReader, return values and output parameters will not be accessible until the DataReader is closed.
TableDirect Name der TabelleThe name of a table.

BeispielExample

Das folgende Codebeispiel zeigt, wie durch Festlegen seiner Eigenschaften ein SqlCommand-Objekt zum Ausführen einer gespeicherten Prozedur erstellt werden kann.The following code example demonstrates how to create a SqlCommand object to execute a stored procedure by setting its properties. Ein SqlParameter-Objekt wird zur Angabe des Eingabeparameters für die gespeicherte Prozedur verwendet.A SqlParameter object is used to specify the input parameter to the stored procedure. Der Befehl wird mit der ExecuteReader-Methode ausgeführt, und die Ausgabe des SqlDataReader wird im Konsolenfenster angezeigt.The command is executed using the ExecuteReader method, and the output from the SqlDataReader is displayed in the console window.

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();
        }
    }
}
Shared Sub GetSalesByCategory(ByVal connectionString As String, _
    ByVal categoryName As String)

    Using connection As New SqlConnection(connectionString)

        ' Create the command and set its properties.
        Dim command As SqlCommand = New SqlCommand()
        command.Connection = connection
        command.CommandText = "SalesByCategory"
        command.CommandType = CommandType.StoredProcedure

        ' Add the input parameter and set its properties.
        Dim parameter As 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 reader As SqlDataReader = command.ExecuteReader()

            If reader.HasRows Then
                Do While reader.Read()
                    Console.WriteLine("{0}: {1:C}", _
                      reader(0), reader(1))
                Loop
            Else
                Console.WriteLine("No rows returned.")
            End If
        End Using
    End Using
End Sub

Befehle für die ProblembehandlungTroubleshooting Commands

Der .NET Framework-Datenanbieter für SQL Server enthält Leistungsindikatoren, mit denen Sie Probleme ermitteln können, die mit fehlgeschlagenen Befehlsausführungen im Zusammenhang stehen.The .NET Framework Data Provider for SQL Server adds performance counters to enable you to detect intermittent problems related to failed command executions. Weitere Informationen finden Sie unter Leistungsindikatoren.For more information see Performance Counters.

Siehe auchSee also