Executando um comando
Aplicável a: .NET Framework .NET .NET Standard
O Provedor de Dados do Microsoft SqlClient para SQL Server tem um objeto SqlCommand que herda de DbCommand. Esse objeto expõe métodos de execução de comandos com base no tipo de comando e no valor de retorno desejado, conforme descrito na tabela a seguir.
Comando | Valor Retornado |
---|---|
ExecuteReader |
Retorna um objeto DataReader . |
ExecuteScalar |
Retorna um único valor escalar. |
ExecuteNonQuery |
Executa um comando que não retorna nenhuma linha. |
ExecuteXMLReader |
Retorna um XmlReader. Disponível somente para um objeto do SqlCommand . |
Cada objeto de comando fortemente tipado também dá suporte a uma enumeração de CommandType que especifica como uma cadeia de caracteres de comando é interpretada, conforme descrito na tabela a seguir.
CommandType | Descrição |
---|---|
Text |
Um comando SQL que define as instruções a serem executadas na fonte de dados. |
StoredProcedure |
O nome do procedimento armazenado. Você pode usar a propriedade Parameters de um comando para acessar os parâmetros de entrada e saída e os valores de retorno, independentemente do método Execute chamado. |
TableDirect |
O nome de uma tabela. |
Importante
Ao usar ExecuteReader
, os valores de retorno e os parâmetros de saída não estarão acessíveis até que o DataReader
seja fechado.
Exemplo
O código de exemplo a seguir demonstra como criar um objeto SqlCommand para executar um procedimento armazenado definindo suas propriedades. Um objeto SqlParameter é usado para especificar o parâmetro de entrada para o procedimento armazenado. O comando é executado usando o método ExecuteReader e a saída do 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 solução de problemas
O Provedor de Dados do Microsoft SqlClient para o SQL Server adiciona contadores de desempenho para habilitar você a detectar problemas intermitentes relacionados a execuções de comandos com falha. Para obter mais informações, confira Contadores de diagnóstico no SqlClient.