Executando um comando
Cada provedor de dados do .NET Framework incluído com o .NET Framework tem seu próprio objeto de comando que herda do DbCommand. O Provedor de Dados do .NET Framework para OLE DB inclui um OleDbCommand objeto, o Provedor de Dados do .NET Framework para SQL Server inclui um SqlCommand objeto, o Provedor de Dados do .NET Framework para ODBC inclui um OdbcCommand objeto e o Provedor de Dados do .NET Framework para Oracle inclui um OracleCommand objeto. Cada um desses objetos expõe métodos para executar comandos com base no tipo de comando e no valor de retorno desejado, conforme descrito na tabela a seguir.
Comando | Devolver Valor |
---|---|
ExecuteReader |
Retorna um DataReader objeto. |
ExecuteScalar |
Retorna um único valor escalar. |
ExecuteNonQuery |
Executa um comando que não retorna nenhuma linha. |
ExecuteXMLReader |
Devolve um XmlReaderficheiro . Disponível apenas para um SqlCommand objeto. |
Cada objeto de comando fortemente tipado também oferece suporte a uma CommandType enumeração que especifica como uma cadeia de caracteres de comando é interpretada, conforme descrito na tabela a seguir.
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. Você pode usar a Parameters propriedade de um comando para acessar parâmetros de entrada e saída e valores de retorno, independentemente do método chamado Execute . Ao usar ExecuteReader o , os valores de retorno e os parâmetros de saída não estarão acessíveis até que o DataReader seja fechado. |
TableDirect |
O nome de uma tabela. |
Exemplo
O exemplo de código a seguir demonstra como criar um SqlCommand objeto para executar um procedimento armazenado definindo suas propriedades. Um SqlParameter objeto é usado para especificar o parâmetro de entrada para o procedimento armazenado. O comando é executado usando o ExecuteReader método e a SqlDataReader saída do é exibida na janela do console.
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
Comandos de solução de problemas
O Provedor de Dados do .NET Framework para SQL Server adiciona contadores de desempenho para permitir que você detete problemas intermitentes relacionados a execuções de comando com falha. Para obter mais informações, consulte Contadores de desempenho.