Freigeben über


SqlCommand-Klasse

Stellt eine Transact-SQL-Anweisung oder eine gespeicherte Prozedur dar, die in einer SQL Server-Datenbank ausgeführt werden soll. Diese Klasse kann nicht geerbt werden.

Namespace: System.Data.SqlClient
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public NotInheritable Class SqlCommand
    Inherits DbCommand
    Implements ICloneable
'Usage
Dim instance As SqlCommand
public sealed class SqlCommand : DbCommand, ICloneable
public ref class SqlCommand sealed : public DbCommand, ICloneable
public final class SqlCommand extends DbCommand implements ICloneable
public final class SqlCommand extends DbCommand implements ICloneable

Hinweise

Wenn eine Instanz von SqlCommand erstellt wird, werden die Lese-/Schreibeigenschaften auf die Anfangswerte festgelegt. Eine Liste dieser Werte finden Sie unter dem SqlCommand-Konstruktor.

SqlCommand enthält die folgenden Methoden für das Ausführen von Befehlen in einer SQL Server-Datenbank:

Element

Beschreibung

BeginExecuteNonQuery

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die durch diesen SqlCommand beschrieben wird und i. d. R. Befehle, z. B. INSERT-, DELETE, UPDATE- oder SET-Anweisungen, ausführt. Alle Aufrufe von BeginExecuteNonQuery müssen mit einem Aufruf von EndExecuteNonQuery kombiniert werden, womit der Vorgang typischerweise auf einem separaten Thread abgeschlossen wird.

BeginExecuteReader

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand beschrieben wird, und ruft ein oder mehrere Resultsets vom Server ab. Alle Aufrufe von BeginExecuteReader müssen mit einem Aufruf von EndExecuteReader kombiniert werden, womit der Vorgang typischerweise auf einem separaten Thread abgeschlossen wird.

BeginExecuteXmlReader

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherter Prozedur, die von diesem SqlCommand beschrieben wird. Alle Aufrufe von BeginExecuteXmlReader müssen mit einem Aufruf von EndExecuteXmlReader kombiniert werden, womit der Vorgang typischerweise auf einem separaten Thread abgeschlossen wird und ein XmlReader-Objekt zurückgegeben wird.

ExecuteReader

Führt Befehle aus, die Zeilen zurückgeben. Zur Verbesserung der Leistung ruft ExecuteReader Befehle mit der im System gespeicherten Transact-SQL-Prozedur sp_executesql auf. Deshalb zeigt ExecuteReader u. U. ungewünschte Auswirkungen, wenn damit Befehle, z. B. SET-Anweisungen in Transact-SQL, ausgeführt werden.

ExecuteNonQuery

Führt Befehle wie die Transact-SQL-Anweisungen INSERT, DELETE, UPDATE und SET aus.

ExecuteScalar

Ruft einen einzelnen Wert (z. B. einen Aggregatwert) aus einer Datenbank ab.

ExecuteXmlReader

Sendet CommandText an Connection und erstellt ein XmlReader-Objekt.

Sie können die CommandText-Eigenschaft zurücksetzen und das SqlCommand-Objekt wieder verwenden. Sie müssen jedoch den SqlDataReader schließen, bevor ein neuer oder zuvor verwendeter Befehl ausgeführt werden kann.

Wenn von der Methode, die einen SqlCommand ausführt, eine SqlException generiert wird, bleibt die SqlConnection geöffnet, sofern der Schweregrad 19 oder kleiner ist. SqlConnection wird in der Regel ab dem Schweregrad 20 geschlossen. Die Benutzer können die Verbindung aber erneut öffnen und fortfahren.

Thema Position
Exemplarische Vorgehensweise: Anzeigen von hierarchischen Daten in einem TreeView-Steuerelement Erstellen von ASP.NET-Webanwendungen in Visual Studio
Exemplarische Vorgehensweise: Anzeigen von hierarchischen Daten in einem TreeView-Steuerelement Erstellen von ASP.NET-Webanwendungen in Visual Studio
Exemplarische Vorgehensweise: Anzeigen von hierarchischen Daten in einem TreeView-Steuerelement Erstellen von ASP.NET-Webanwendungen in Visual Studio

Beispiel

Im folgenden Beispiel werden eine SqlConnection, ein SqlCommand und ein SqlDataReader erstellt. Im Beispiel werden alle Daten gelesen und auf der Konsole ausgegeben. Abschließend wird im Beispiel der SqlDataReader und danach die SqlConnection geschlossen.

Public Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()
        Dim reader As SqlDataReader = command.ExecuteReader()
        Try
            While reader.Read()
                Console.WriteLine(String.Format("{0}, {1}", _
                    reader(0), reader(1)))
            End While
        Finally
            ' Always call Close when done reading.
            reader.Close()
        End Try
    End Using
End Sub
private static void ReadOrderData(string connectionString)
{
    string queryString = 
        "SELECT OrderID, CustomerID FROM dbo.Orders;";
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }
        }
        finally
        {
            // Always call Close when done reading.
            reader.Close();
        }
    }
}

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Data.Common.DbCommand
        System.Data.SqlClient.SqlCommand

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

SqlCommand-Member
System.Data.SqlClient-Namespace

Weitere Ressourcen

Verbinden und Abrufen von Daten mit ADO.NET
Verwenden des .NET Framework-Datenanbieters für SQL Server