Share via


Ejecutar un comando (ADO.NET)

Actualización: November 2007

Cada proveedor de datos de .NET Framework incluido en .NET Framework dispone de su propio objeto command que hereda de DbCommand. El proveedor de datos de .NET Framework para OLE DB incluye un objeto OleDbCommand, el proveedor de datos de .NET Framework para SQL Server incluye un objeto SqlCommand, el proveedor de datos de .NET Framework para ODBC incluye un objeto OdbcCommand y el proveedor de datos de .NET Framework para Oracle incluye un objeto OracleCommand. Cada uno de estos objetos expone métodos para ejecutar comandos que se basan en el tipo de comando y el valor devuelto deseado, tal como se describe en la tabla siguiente.

Comando

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. Sólo está disponible para un objeto SqlCommand.

Cada objeto command con establecimiento inflexible de tipos 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. Al usar ExecuteReader, no es posible el acceso a los valores devueltos y los parámetros de salida hasta que se cierra DataReader.

TableDirect

Nombre de una tabla.

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.

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()
        Dim 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 Sub
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();
        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 de .NET Framework para SQL Server agrega contadores de rendimiento que permiten detectar problemas intermitentes relacionados con errores en la ejecución de comandos. Para obtener más información, vea Contadores de rendimiento (ADO.NET).

Vea también

Otros recursos

Comandos y parámetros (ADO.NET)

DataAdapters y DataReaders (ADO.NET)

DataReaders (ADO.NET)