Spuštění příkazu

Každý zprostředkovatel dat rozhraní .NET Framework, který je součástí rozhraní .NET Framework, má vlastní objekt příkazu, který dědí z DbCommandrozhraní . Rozhraní .NET Framework Zprostředkovatel dat pro OLE DB obsahuje OleDbCommand objekt, rozhraní .NET Framework Zprostředkovatel dat pro SQL Server obsahuje SqlCommand objekt, rozhraní .NET Framework Zprostředkovatel dat pro ROZHRANÍ ODBC obsahuje OdbcCommand objekt a rozhraní .NET Framework Zprostředkovatel dat pro Oracle. OracleCommand obsahuje objekt. Každý z těchto objektů zveřejňuje metody pro spouštění příkazů na základě typu příkazu a požadované návratové hodnoty, jak je popsáno v následující tabulce.

Příkaz Návratová hodnota
ExecuteReader Vrátí hodnotu DataReader objektu.
ExecuteScalar Vrátí jednu skalární hodnotu.
ExecuteNonQuery Spustí příkaz, který nevrací žádné řádky.
ExecuteXMLReader Vrátí hodnotu XmlReader. K dispozici pouze pro SqlCommand objekt.

Každý objekt příkazu silného CommandType typu podporuje také výčet, který určuje, jak se interpretuje řetězec příkazu, jak je popsáno v následující tabulce.

Commandtype Popis
Text Příkaz SQL definující příkazy, které se mají spustit ve zdroji dat.
StoredProcedure Název uložené procedury. Vlastnost příkazu můžete použít Parameters pro přístup ke vstupním a výstupním parametrům a návratovým hodnotám bez ohledu na to, kterou Execute metodu se volá. Při použití ExecuteReadernebudou DataReader návratové hodnoty a výstupní parametry přístupné, dokud se nezavře.
TableDirect Název tabulky.

Příklad

Následující příklad kódu ukazuje, jak vytvořit SqlCommand objekt pro spuštění uložené procedury nastavením jeho vlastností. Objekt SqlParameter slouží k zadání vstupního parametru uložené procedury. Příkaz se spustí pomocí ExecuteReader metody a výstup z SqlDataReader okna konzoly se zobrazí.

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

        // Add the input parameter and set its properties.
        SqlParameter parameter = new()
        {
            ParameterName = "@CategoryName",
            SqlDbType = SqlDbType.NVarChar,
            Direction = ParameterDirection.Input,
            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

Řešení potíží s příkazy

Rozhraní .NET Framework Zprostředkovatel dat pro SQL Server přidává čítače výkonu, které umožňují detekovat přerušované problémy související s neúspěšnými spuštěními příkazů. Další informace naleznete v tématu Čítače výkonu.

Viz také