Sdílet prostřednictvím


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 DbCommand. Zprostředkovatel dat rozhraní .NET Framework pro OLE DB obsahuje objekt OleDbCommand, zprostředkovatel dat rozhraní .NET Framework pro SQL Server obsahuje objekt SqlCommand, zprostředkovatel dat rozhraní .NET Framework pro rozhraní ODBC obsahuje objekt OdbcCommand a zprostředkovatel dat rozhraní .NET Framework pro Oracle obsahuje objekt OracleCommand. 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í objekt DataReader.
ExecuteScalar Vrátí jednu skalární hodnotu.
ExecuteNonQuery Spustí příkaz, který nevrací žádné řádky.
ExecuteXMLReader Vrátí XmlReader. K dispozici pouze pro objekt SqlCommand.

Každý objekt příkazu silného typu rovněž podporuje výčet CommandType, který určuje, jak má být řetězec příkazu interpretován, jak je to uvedeno v následující tabulce.

TypPříkazu Popis
Text Příkaz SQL definující příkazy, které se mají spustit ve zdroji dat.
StoredProcedure Název uložené procedury. Vlastnost Parameters příkazu můžete použít pro přístup ke vstupním a výstupním parametrům a návratovým hodnotám bez ohledu na to, který Execute metoda je volána. Při použití ExecuteReadernebudou návratové hodnoty a výstupní parametry přístupné, dokud DataReader nezavřete.
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 určení vstupního parametru uložené procedury. Příkaz se spustí pomocí metody ExecuteReader a výstup z SqlDataReader se zobrazí v okně konzoly.

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($"{reader[0]}: {reader[1]:C}");
                }
            }
            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

Příkazy pro řešení problémů

Zprostředkovatel dat rozhraní .NET Framework 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é