Выполнение команды

Применимо: платформа .NET Framework .NET Standard

Скачать ADO.NET

Поставщик данных Microsoft SqlClient для SQL Server содержит объект SqlCommand, наследуемый от DbCommand. Этот объект предоставляет методы для выполнения команд на основе типа команды и требуемого возвращаемого значения, как описано в следующей таблице.

Команда Возвращаемое значение
ExecuteReader Возвращает объект DataReader.
ExecuteScalar Возвращает одно скалярное значение.
ExecuteNonQuery Выполняет команду, которая не возвращает строк.
ExecuteXMLReader Возвращает значение типа XmlReader. Этот метод предусмотрен только для объекта SqlCommand.

Каждый строго типизированный объект команды поддерживает также перечисление CommandType, которое указывает способ интерпретации строки команды, как описано в следующей таблице.

CommandType Description
Text Команда SQL, определяющая инструкции, которые выполняются применительно к источнику данных.
StoredProcedure Имя хранимой процедуры. Свойство команды Parameters может использоваться для доступа к входным и выходным параметрам и возвращаемым значениям независимо от вызываемого метода Execute.
TableDirect Имя таблицы.

Внимание

При использовании ExecuteReader возвращаемые значения и выходные параметры будут недоступными, пока не будет закрыт DataReader.

Пример

Следующий пример кода демонстрирует способ создания объекта SqlCommand для выполнения хранимой процедуры путем установки его свойств. Объект SqlParameter используется для задания входных параметров хранимой процедуры. Команда выполняется с помощью метода ExecuteReader, и выходное значение из SqlDataReader отображается в окне консоли.

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();
        }
    }
}

Устранение неполадок с командами

Поставщик данных Microsoft SqlClient для SQL Server добавляет счетчики диагностики, позволяющие обнаружить временные проблемы, связанные с невыполненными командами. Дополнительные сведения см. в статье Счетчики диагностики в SqlClient.

См. также