Partilhar via


Execução de um comando

Aplica-se a: .NET Framework .NET .NET Standard

Baixar ADO.NET

O Microsoft SqlClient Data Provider para SQL Server tem SqlCommand um objeto que herda de DbCommand. Este objeto expõe métodos para executar comandos com base no tipo de comando e no valor de retorno desejado, conforme descrito na tabela seguinte.

Command Valor de retorno
ExecuteReader Devolve um DataReader objeto.
ExecuteScalar Devolve um único valor escalar.
ExecuteNonQuery Executa um comando que não devolve nenhuma linha.
ExecuteXMLReader Retorna um XmlReader. Disponível apenas para um SqlCommand objeto.

Cada objeto de comando fortemente tipado também suporta uma CommandType enumeração que especifica a forma como uma string de comando é interpretada, conforme descrito na tabela seguinte.

Tipo de comando Description
Text Um comando SQL que define as instruções a serem executadas na fonte de dados.
StoredProcedure O nome do procedimento armazenado. Pode usar a propriedade Parameters de um comando para aceder a parâmetros de entrada e saída e valores de retorno, independentemente de qual o método Execute chamado.
TableDirect O nome de uma tabela.

Importante

Ao usar ExecuteReader, valores de retorno e parâmetros de saída não estarão acessíveis até que o DataReader esteja fechado.

Example

O seguinte exemplo de código demonstra como criar um SqlCommand objeto para executar um procedimento armazenado, definindo as suas propriedades. Um SqlParameter objeto é usado para especificar o parâmetro de entrada do procedimento armazenado. O comando é executado usando o método ExecuteReader, e a saída SqlDataReader é exibida na janela do console.

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

Comandos de resolução de problemas

O Microsoft SqlClient Data Provider para SQL Server adiciona contadores de diagnóstico para permitir detetar problemas intermitentes relacionados com execuções falhadas de comandos. Para mais informações, consulte Contadores de diagnóstico no SqlClient.

Consulte também