Objeto SqlCommand






OBJETO SQLCOMMAND:
I.    CONTENIDO:
1.   DEFINICIÓN:
SqlCommand representa un procedimiento almacenado o una instrucción de Transact-SQL que se ejecuta en una base de datos de SQL Server.
Un objeto SqlCommand se utiliza cuando necesitamos ejecutar un tipo de sentencia Sql a la base de datos (estos tipos pueden ser: Delete, Update, Insert o Select).
Cuando se crea una instancia de SqlCommand, las propiedades de lectura y escritura se establecen en sus valores iniciales.
SqlCommand proporciona las siguientes propiedades y métodos de ejecución de comandos en una base de datos de SQL Server:
2. PROPIEDADES:
NOMBRE
DESCRIPCIÓN
ColumnEncryptionSetting
Obtiene o establece la configuración del cifrado de columnas para este comando.
CommandText
Obtiene o establece la instrucción de Transact-SQL, el nombre de tabla o el procedimiento almacenado que se ejecutan en el origen de datos.(Invalida DbCommand.CommandText).
CommandTimeout
Obtiene o establece el tiempo de espera antes de terminar el intento de ejecutar un comando y generar un error.(Invalida DbCommand.CommandTimeout).
CommandType
Obtiene o establece un valor que indica cómo se interpreta la propiedad CommandText.(Invalida DbCommand.CommandType).
Connection
Obtiene o establece la interfaz SqlConnection que usa esta instancia de SqlCommand.
Container
Obtiene IContainer que contiene Component.(Heredado de Component).
DesignTimeVisible
Obtiene o establece un valor que indica si el objeto de comando debe estar visible en un control del Diseñador de Windows Forms.(Invalida DbCommand.DesignTimeVisible).
Notification
Obtiene o establece un valor que especifica el objeto SqlNotificationRequest enlazado a este comando.
NotificationAutoEnlist
Obtiene o establece un valor que indica si la aplicación debe recibir automáticamente notificaciones de consulta de un objeto SqlDependency común.
Parameters
Obtiene la estructura SqlParameterCollection.
Site
Obtiene o establece la ISite de la Component.(Heredado de Component).
Transaction
Obtiene o establece la transacción SqlTransaction en la que se ejecuta SqlCommand.
UpdatedRowSource
Obtiene o establece la manera en que se aplican los resultados del comando a DataRow cuando lo utiliza el método Update de DbDataAdapter.(Invalida DbCommand.UpdatedRowSource).


3. MÉTODOS:
NOMBRE
DESCRIPCIÓN
BeginExecuteNonQuery()
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describeSqlCommand.
BeginExecuteNonQuery(AsyncCallback, Object)
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describe SqlCommand, dados un procedimiento de devolución de llamada e información de estado.
BeginExecuteReader()
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describe SqlCommand y recupera uno o varios conjuntos de resultados del servidor.
BeginExecuteReader(AsyncCallback, Object)
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describeSqlCommand y recupera uno o varios conjuntos de resultados del servidor, dados un procedimiento de devolución de llamada e información de estado.
BeginExecuteReader(AsyncCallback, Object, CommandBehavior)
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describeSqlCommand, utilizando uno de los valores de CommandBehavior y recuperando uno o varios conjuntos de resultados del servidor, a partir del procedimiento de devolución de llamada e información de estado dados.
BeginExecuteReader(CommandBehavior)
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describe SqlCommand utilizando uno de los valores de CommandBehavior.
BeginExecuteXmlReader()
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describe SqlCommand y devuelve los resultados como un objeto XmlReader.
BeginExecuteXmlReader(AsyncCallback, Object)
Inicia la ejecución asincrónica de la instrucción de Transact-SQL o del procedimiento almacenado que describe SqlCommand y devuelve los resultados como un objeto XmlReader a través de un procedimiento de devolución de llamada.
Cancel()
Intenta cancelar la ejecución de un SqlCommand.(Invalida DbCommand.Cancel()).
Clone()
Crea un nuevo objeto SqlCommand que es una copia de la instancia actual.
CreateObjRef(Type)
Crea un objeto que contiene toda la información relevante necesaria para generar a un proxy que se utiliza para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject).
CreateParameter()
Crea una nueva instancia de un objeto SqlParameter.
Dispose()
Libera todos los recursos que usa Component.(Heredado de Component).
EndExecuteNonQuery(IAsyncResult)
Finaliza la ejecución asincrónica de una instrucción de Transact-SQL.
EndExecuteReader(IAsyncResult)
Finaliza la ejecución asincrónica de una instrucción de Transact-SQL y devuelve el objeto SqlDataReadersolicitado.
EndExecuteXmlReader(IAsyncResult)
Finaliza la ejecución asincrónica de una instrucción de Transact-SQL y devuelve los datos solicitados como XML.
Equals(Object)
Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).
ExecuteNonQuery()
Ejecuta una instrucción de Transact-SQL en la conexión y devuelve el número de filas afectadas.(Invalida DbCommand.ExecuteNonQuery()).
ExecuteNonQueryAsync()
Una versión asincrónica de ExecuteNonQuery, que ejecuta una instrucción SQL en un objeto de conexión.
Invoca ExecuteNonQueryAsync con CancellationToken.None.(Heredado de DbCommand).
ExecuteNonQueryAsync(CancellationToken)
Versión asincrónica de ExecuteNonQuery, que ejecuta una instrucción de Transact-SQL con la conexión y devuelve el número de filas afectadas. Token de cancelación que se puede usar para solicitar que se abandone la operación antes de que transcurra el tiempo de espera del comando. Las excepciones se mostrarán a través del objeto Task devuelto. (Invalida DbCommand.ExecuteNonQueryAsync(CancellationToken)).
ExecuteReader()
Envía la propiedad CommandText a Connection y crea un objeto SqlDataReader.
ExecuteReader(CommandBehavior)
Envía CommandText a Connection y crea un SqlDataReader mediante uno de los valores de CommandBehavior.
ExecuteReaderAsync()
Una versión asincrónica de ExecuteReader, que envía la propiedad CommandText a la propiedad Connection y compila SqlDataReader. Las excepciones se mostrarán a través del objeto Task devuelto.
ExecuteReaderAsync(CancellationToken)
Una versión asincrónica de ExecuteReader, que envía la propiedad CommandText a la propiedad Connection y compila SqlDataReader.
Token de cancelación que se puede usar para solicitar que se abandone la operación antes de que transcurra el tiempo de espera del comando. Las excepciones se mostrarán a través del objeto Task devuelto.
ExecuteReaderAsync(CommandBehavior)
Versión asincrónica de ExecuteReader, que envía la propiedad CommandText a la propiedad Connection y compila SqlDataReader. Las excepciones se mostrarán a través del objeto Task devuelto.
ExecuteReaderAsync(CommandBehavior, CancellationToken)
Versión asincrónica de ExecuteReader, que envía la propiedad CommandText a la propiedad Connection y compila SqlDataReader
Token de cancelación que se puede usar para solicitar que se abandone la operación antes de que transcurra el tiempo de espera del comando. Las excepciones se mostrarán a través del objeto Task devuelto.
ExecuteScalar()
Ejecuta la consulta y devuelve la primera columna de la primera fila del conjunto de resultados devuelto por la consulta. Las demás columnas o filas no se tienen en cuenta.(Invalida DbCommand.ExecuteScalar()).
ExecuteScalarAsync()
Una versión asincrónica de ExecuteScalar, que ejecuta la consulta y devuelve la primera columna de la primera fila del conjunto de resultados devuelto por la consulta. Se omiten todas las demás columnas y filas.
Invoca ExecuteScalarAsync con CancellationToken.None.(Heredado de DbCommand).
ExecuteScalarAsync(CancellationToken)
Versión asincrónica de ExecuteScalar que ejecuta la consulta asincrónicamente y devuelve la primera columna de la primera fila del conjunto de resultados que devuelve la consulta. Las demás columnas o filas no se tienen en cuenta.
Token de cancelación que se puede usar para solicitar que se abandone la operación antes de que transcurra el tiempo de espera del comando. Las excepciones se mostrarán a través del objeto Task devuelto.(Invalida DbCommand.ExecuteScalarAsync(CancellationToken)).
ExecuteXmlReader()
Envía CommandText a Connection y crea un objeto XmlReader.
ExecuteXmlReaderAsync()
Una versión asincrónica de ExecuteXmlReader, que envía la propiedad CommandText a la propiedadConnection y compila un objeto XmlReader.
Las excepciones se mostrarán a través del objeto Task devuelto.
ExecuteXmlReaderAsync(CancellationToken)
Una versión asincrónica de ExecuteXmlReader, que envía la propiedad CommandText a la propiedad Connection y compila un objeto XmlReader.
Token de cancelación que se puede usar para solicitar que se abandone la operación antes de que transcurra el tiempo de espera del comando. Las excepciones se mostrarán a través del objeto Task devuelto.
GetHashCode()
Sirve como la función hash predeterminada. (Heredado de Object).
GetLifetimeService()
Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).
GetType()
Obtiene el Type de la instancia actual.(Heredado de Object).
InitializeLifetimeService()
Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).
Prepare()
Crea una versión preparada del comando en una instancia de SQL Server.(Invalida DbCommand.Prepare()).
ResetCommandTimeout()
Restablece el valor predeterminado de la propiedad CommandTimeout.
ToString()
Devuelve un String que contiene el nombre de la Component, si existe. Este método no se debe invalidar.(Heredado de Component).


4. EJEMPLOS:

CREAR UN OBJETO SQLCOMMAND:
De manera similar a otros objetos C #, crea una instancia de un objeto SqlCommand a través de la nueva declaración de instancia, de la siguiente manera:
SqlCommand cmd = new SqlCommand ("seleccionar CategoryName from Categories", conn);
La línea anterior es típica para crear instancias de un objeto SqlCommand. Toma un parámetro de cadena que contiene el comando que desea ejecutar y una referencia a un objeto SqlConnection. SqlCommand tiene algunas sobrecargas, que verá en los ejemplos:
CONSULTAR DATOS:
Al usar un comando de selección SQL, recuperas un conjunto de datos. Para lograr esto con un objeto SqlCommand, se usa el método ExecuteReader, que devuelve un objeto SqlDataReader. El siguiente ejemplo muestra cómo usar el objeto SqlCommand para obtener un objeto SqlDataReader:

//Creamos una instancia de un nuevo comando con una consulta y conexión:
SqlCommand cmd = new SqlCommand ("seleccionar CategoryName from Categories", conn);
//Llamamos al lector de ejecución para obtener resultados de consulta:
 SqlDataReader rdr = cmd.ExecuteReader ();

En el ejemplo anterior, instanciamos un objeto SqlCommand, pasando la cadena de comando y el objeto de conexión al constructor. Luego obtenemos un objeto SqlDataReader llamando al método ExecuteReader del objeto SqlCommand, cmd.
INSERTAR DATOS:
Para insertar datos en una base de datos, usamos el método ExecuteNonQuery del objeto SqlCommand. El siguiente código muestra cómo insertar datos en una tabla de base de datos:

// Preparamos el comando String
 String string insertString = @ "
 insertar en Categorías
 (CategoryName, descripción)
 valores ('Varios', 'Lo que no se ajusta en otro lado') ";
//Creamos una instancia de un nuevo comando con una consulta y conexión
  SqlCommand cmd = new SqlCommand (insertString, conn);
//Llamamos a ExecuteNonQuery para enviar el comando
  cmd.ExecuteNonQuery ();

Para ejecutar este comando, simplemente llamamos al método ExecuteNonQuery en la instancia de SqlCommand, cmd.


ACTUALIZACIÓN DE DATOS:
El método ExecuteNonQuery también se usa para actualizar datos. El siguiente código muestra cómo actualizar los datos:

//Preparamos el comando string
 String string updateString = @ "
 actualizar Categorías
 establecer CategoryName = 'Otro'
 donde CategoryName = 'Miscellaneous' ";

 //Creamos una instancia de un nuevo comando con solo texto de comando
 SqlCommand cmd = new SqlCommand (updateString);
 // Establecemos la propiedad Connection
 cmd.Connection = conn;
 // Llamamos a ExecuteNonQuery para enviar comandos
 cmd.ExecuteNonQuery ();

Nuevamente, colocamos el comando SQL en una variable de cadena, pero esta vez usamos un constructor SqlCommand diferente que toma solo el comando. Asignamos el objeto SqlConnection, conn, a la propiedad Connection del objeto SqlCommand, cmd.
El método ExecuteNonQuery realiza el comando de actualización.

ELIMINAR DATOS:
También puede eliminar datos utilizando el método ExecuteNonQuery. El siguiente ejemplo muestra cómo eliminar un registro de una base de datos con el método ExecuteNonQuery:

// Preparamos el comando string
  String deleteString = @ "
 eliminar de Categorías
 donde CategoryName = 'Otro' ";
  //Creamos una instancia de un nuevo comando
 SqlCommand cmd = new SqlCommand ();
 // Establecemos la propiedad CommandText
 cmd.CommandText = deleteString;
 // Establecemos la propiedad Connection
 cmd.Connection = conn;
  // Llamamos a ExecuteNonQuery para enviar comandos
 cmd.ExecuteNonQuery ();

Este ejemplo usa el constructor SqlCommand sin parámetros. En cambio, explicity establece las propiedades CommandText y Connection del objeto SqlCommand, cmd.
La llamada al método ExecuteNonQuery envía el comando a la base de datos.


OBTENER VALORES INDIVIDUALES:
A veces, todo lo que necesita de una base de datos es un valor único, que puede ser un recuento, suma, promedio u otro valor agregado de un conjunto de datos. Realizar un ExecuteReader y calcular el resultado en su código no es la forma más eficiente de hacerlo. La mejor opción es dejar que la base de datos realice el trabajo y devuelva solo el valor que necesita. El siguiente ejemplo muestra cómo hacer esto con el método ExecuteScalar:

//Creamos una instancia de un nuevo comando
 SqlCommand cmd = new SqlCommand ("select count (*) from Categories", conn);
  //Llamamamos a ExecuteNonQuery para enviar comandos
 Int count = ( int ) cmd.ExecuteScalar ();

La consulta en el constructor SqlCommand obtiene el recuento de todos los registros de la tabla Categorías. Esta consulta solo devolverá un valor único. El método ExecuteScalar devuelve este valor. Como el tipo de devolución de ExecuteScalar es type object, utilizamos un operador de conversión para convertir el valor a int.
 
II.    RESUMEN:
Un objeto SqlCommand le permite consultar y enviar comandos a una base de datos. Tiene métodos que están especializados para diferentes comandos. El método ExecuteReader devuelve un objeto SqlDataReader para ver los resultados de una consulta de selección. Para insertar, actualizar y eliminar comandos SQL, utiliza el método ExecuteNonQuery. Si solo necesita un único valor agregado de una consulta, ExecuteScalar es la mejor opción.
SqlCommand define una propiedad de colección llamada Parameters, en esta propiedad se almacenan los valores para los parámetros utilizados en una instrucción o consulta de SQL que ha sido asignada como cadena de caracteres a la propiedad CommandText de un SqlCommand. Estos parámetros son del tipo SqlParameter y están directamente relacionados con las variables utilizadas en las instrucciones o consultas T-SQL.
La ventaja de utilizar las variables de T-SQL en la cadena de la consulta, nos permiten tener una cadena de caracteres uniforme y similar a lo que se usa directamente con T-SQL, estas variables también pueden ser los parámetros de un procedimiento almacenado.

III.    SUMMARY:
A SqlCommand object allows you to query and send commands to a database. It has methods that are specialized for different commands. The ExecuteReader method returns a SqlDataReader object to see the results of a selection query. To insert, update and delete SQL commands, use the ExecuteNonQuery method. If you only need a single added value of a query, ExecuteScalar is the best option.
SqlCommand defines a collection property called Parameters, in this property values ​​are stored for the parameters used in an SQL statement or query that has been assigned as a character string to the CommandText property of a SqlCommand. These parameters are of the SqlParameter type and are directly related to the variables used in the instructions or T-SQL queries.
The advantage of using the T-SQL variables in the query string, allow us to have a uniform string of characters similar to what is used directly with T-SQL, these variables can also be the parameters of a stored procedure.

IV.    RECOMENDACIONES:
Los comandos se emiten en las bases de datos para realizar acciones en almacenes de datos e incluir cualquier instrucción que se pueda emitir en una base de datos. Puede utilizar las clases OleDbCommand o SqlCommand para obtener un comando para su almacén de datos; OleDbCommand puede ser específica del almacén de datos.
Con ADO, puede ejecutar comandos a través de los objetos Command, Connection o Recordset. En ADO.NET, sólo los objetos Command (SqlCommand u OleDbCommand) ejecutan comandos.
V.    CONCLUSIONES:
SqlCommand trata con bases de datos. Ejecuta comandos SQL en una base de datos. Envía un comando SQL a una base de datos especificada por un objeto SqlConnection.
Luego llama a los métodos de instancia para aplicar físicamente el comando a la base de datos.
El tipo SqlCommand tiene un constructor parametrizado público y se puede usar con uno o más argumentos. El primer parámetro especifica la declaración de SQL. El segundo parámetro es SqlConnection. El tercer parámetro es SqlTransaction.

VI.    APRECIACIÓN DEL EQUIPO:
Un objeto SqlCommand nos permite especificar qué tipo de interacción desea realizar con una base de datos. Por ejemplo, puede seleccionar, insertar, modificar y eliminar comandos en filas de datos en una tabla de base de datos. El objeto SqlCommand se puede usar para admitir escenarios de administración de datos desconectados.
SqlCommand tiene un constructor y puede especificar su conexión y el texto SQL.

VII.    GLOSARIO DE TÉRMINOS:

·       Consultas T-SQL: Es genérico ejecuta una instrucción Transact-SQL proporcionada por el usuario como parámetro de entrada, guarda el resultado de la consulta y, a continuación, carga el resultado en el almacén de administración de datos.
·   OLE DB: Es la sigla de Object Linking and Embedding for Databases ("Enlace e incrustación de objetos para bases de datos") y es una tecnología desarrollada por Microsoft usada para tener acceso a diferentes fuentes de información, o bases de datos, de manera uniforme.
·    MarshalByRefObject: Es una clase que permite a sus herederas exponer propiedades y métodos fuera de los límites de la aplicación.
·   Ejecución Asincrónica: Se basa en llamadas que pueden ser cumplidas ahora o en un futuro. Es decir, las variables pueden ser llenadas o asignadas en cualquier momento de la ejecución del programa.
·    Objeto XmlReaderproveer: Es un objeto que provee la posibilidad de leer el contenido de los archivos XML

VIII.    LINKOGRAFÍA:

 ·         https://jacace.wordpress.com/2012/01/22/en-que-casos-se-debe-usar-un-sqlcommand- o-sqldataadapter/
·         http://csharp-station.com/Tutorial/AdoDotNet/Lesson03
·         https://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx
·         https://blogs.msmvps.com/otelis/2007/06/04/par-225-metros-de-sqlcommand-y-las-variables-de-sql-server/
·         https://es.slideshare.net/LisbethOcaaBueno/objeto-sqlcommand-81331607





Comentarios

  1. Se tiene que definir 3 CONCLUSIONES y RECOMENDACIONES. En el GLOSARIO se debe definir al menos 10 términos. Gracias por su investigación.

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS