Freigeben über


Ausführen eines Befehls (ADO.NET)

Aktualisiert: November 2007

Jeder in .NET Framework enthaltene .NET Framework-Datenanbieter besitzt ein eigenes Befehlsobjekt, das von DbCommand erbt. 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. 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.

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

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. Wenn Sie die ExecuteReader-Methode aufrufen, stehen die Rückgabewerte und die Ausgabeparameter jedoch erst zur Verfügung, wenn das DataReader-Objekt geschlossen ist.

TableDirect

Name der Tabelle

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.

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()
        Dim 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 Sub
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();
        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 für die Problembehandlung

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. Weitere Informationen finden Sie unter Leistungsindikatoren (ADO.NET).

Siehe auch

Weitere Ressourcen

Befehle und Parameter (ADO.NET)

'DataAdapters' und 'DataReaders' (ADO.NET)

'DataReaders' (ADO.NET)