Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cada proveedor de datos de .NET Framework incluido con .NET Framework tiene su propio objeto de comando que hereda de DbCommand. El proveedor de datos de .NET Framework para OLE DB incluye un OleDbCommand objeto, el proveedor de datos de .NET Framework para SQL Server incluye un SqlCommand objeto, el proveedor de datos de .NET Framework para ODBC incluye un OdbcCommand objeto y el proveedor de datos de .NET Framework para Oracle incluye un OracleCommand objeto. Cada uno de estos objetos expone métodos para ejecutar comandos basados en el tipo de comando y el valor devuelto deseado, 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. 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.
TipoDeComando | Descripción |
---|---|
Text |
Comando 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.
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($"{reader[0]}: {reader[1]:C}");
}
}
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 solución de problemas
El proveedor de datos de .NET Framework para SQL Server agrega contadores de rendimiento para permitirle detectar problemas intermitentes relacionados con ejecuciones de comandos con errores. Para obtener más información, consulte Contadores de rendimiento.