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:
·
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
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