Ejecutar un comando

Se aplica a: .NET Framework .NET .NET Standard

Descargar ADO.NET

El proveedor de datos SqlClient de Microsoft para SQL Server tiene un objeto SqlCommand que hereda de DbCommand. Este objeto expone métodos para ejecutar comandos en función del tipo de comando y el valor devuelto deseado, como se describe en la tabla siguiente.

Get-Help Valor devuelto
ExecuteReader Devuelve un objeto DataReader.
ExecuteScalar Devuelve un solo valor escalar.
ExecuteNonQuery Ejecuta un comando que no devuelve ninguna fila.
ExecuteXMLReader Devuelve un valor XmlReader. Solo está disponible para un objeto SqlCommand.

Cada objeto command fuertemente tipado admite también una enumeración CommandType que especifica cómo se interpreta una cadena de comando, tal como se describe en la tabla siguiente.

CommandType Descripción
Text Comando de SQL que define las instrucciones que se van a ejecutar en el origen de datos.
StoredProcedure Nombre del procedimiento almacenado. Puede usar la propiedad Parameters de un comando para tener acceso a los parámetros de entrada y de salida y a los valores devueltos, independientemente del método Execute al que se llame.
TableDirect Nombre de una tabla.

Importante

Al usar ExecuteReader, no es posible el acceso a los valores devueltos y los parámetros de salida hasta que se cierra DataReader.

Ejemplo

En el ejemplo de código siguiente se muestra cómo se crea un objeto SqlCommand para ejecutar un procedimiento almacenado mediante el establecimiento de sus propiedades. Para especificar el parámetro de entrada del procedimiento almacenado se usa un objeto SqlParameter. El comando se ejecuta con el método ExecuteReader y el resultado de SqlDataReader se muestra en la ventana de consola.

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

Solución de problemas de comandos

El proveedor de datos SqlClient de Microsoft para SQL Server agrega contadores de diagnóstico para que pueda detectar problemas intermitentes relacionados con errores en las ejecuciones de comandos. Para obtener más información, consulte Contadores de diagnóstico en SqlClient.

Vea también