"AÑO DEL BUEN SERVICIO AL CIUDADANO"
ESCUELA ACADÉMICA INGENIERÍA DE SISTEMAS Y TELEMÁTICA
ASIGNATURA
LABORATORIO DE PROGRAMACIÓN I
TEMA
OBJETO SQLCOMMAND
AUTORES
ARISTA CORONEL JORGE LUIS
RAMOS FERNÁNDEZ SONIA ELVIRA
DOCENTE
ING. MARCO AURELIO PORRO CHULLI
BAGUA GRANDE-UTCUBAMBA
AMAZONAS
2017
1. CONTENIDO
DEFINICION:
Representa el Command SQL que se
va ejecutar en la base de datos. Se encuentra en lenguaje MDL (Data Definition
Lenguaje), es decir puede se puede hacer una consulta, para insertar datos,
borrar o actualizar. Use un objeto Command para realizar una
consulta en una base de datos y devolver registros en un objeto Recordset,
para ejecutar una operación masiva, o para manipular la estructura de una base
de datos. Según la funcionalidad del proveedor, algunos métodos, colecciones o
propiedades del objeto Command pueden generar un error cuando
se hace referencia a ellos.
Con las colecciones, los métodos y las
propiedades de un objeto Command, se puede hacer lo siguiente:
·
Definir el texto ejecutable del comando (por
ejemplo, una instrucción SQL) con la propiedad CommandText.
·
Definir consultas con parámetros o argumentos
de procedimientos almacenados con objetos Parameter y la colección Parameters.
·
Ejecutar un comando y devolver un objeto
Recordset, si procede, con el método Execute.
·
Especificar el tipo de comando con la
propiedad CommandType antes de la ejecución para optimizar el rendimiento.
·
Controlar si el proveedor guarda una versión
preparada (o compilada) del comando antes de la ejecución con la propiedad
Prepared.
·
Establecer el número de segundos que esperará
un proveedor para la ejecución de un comando con la propiedad CommandTimeout.
·
Asociar una conexión abierta con un objeto
Command estableciendo su propiedad ActiveConnection.
·
Establecer la propiedad Name para identificar
el objeto Command como un método en el objeto Connection asociado.
·
Pasar un objeto Command a la propiedad Source
de un objeto Recordset para obtener datos.
·
Obtener acceso a atributos específicos del
proveedor con la colección Properties.
Puede
ser creado explícitamente o implícitamente usado en SqlDataAdapter. Para
cualquier tipo de acceso de base de datos es necesario este objeto. En un
objeto command ejecutar una instrucción contra la base de datos se necesita:
ü Una
conexión abierta válida (objeto connection)
ü Una
sentencia SQL válida (propiedad CommandText)
ü Definir
correctamente el tipo (propiedad CommandType)
Ejemplos:
SELECT
teléfono_cliente FROM clientes (consulta)
INSERT INTO clientes(teléfono_cliente)
VALUES (’983204956’) (inserción)
DELETE FROM clientes
WHERE teléfono_cliente=’983204956’ (eliminación)
UPDATE clientes SET
teléfono_cliente=’983204956’ WHERE id_cliente=1 (eliminación)
NOTA:
Para ejecutar una consulta sin usar un
objeto Command, pase una cadena de consulta al método Execute de un objeto
Connection o al método Open de un objeto Recordset. Sin embargo, un objeto Command
es necesario cuando quiere conservar el texto del comando y volver a ejecutarlo
o usar parámetros de consulta.
Para
crear un objeto Command independientemente de un objeto Connection definido
anteriormente, establezca su propiedad ActiveConnection en una cadena de
conexión válida. ADO seguirá creando un objeto Connection, pero no asignará ese
objeto a una variable de objeto. Sin embargo, si asocia varios objetos Command
a la misma conexión, debe crear y abrir explícitamente un objeto Connection; de
este modo, se asigna el objeto Connection a una variable de objeto. Si no
establece la propiedad ActiveConnection del objeto Command en esta variable de
objeto, ADO creará un nuevo objeto Connection para cada objeto Command, aunque
se utilice la misma cadena de conexión.
Para
ejecutar un objeto Command, basta con invocarlo mediante su propiedad Name en
el objeto Connection asociado. El objeto Command debe tener su propiedad
ActiveConnection establecida en el objeto Connection. Si el objeto Command
tiene parámetros, pase como argumentos sus correspondientes valores al método.
PROPIEDADES:
Ø Propiedad ActiveConnection: Indica a qué
objeto Connection pertenece actualmente el objeto Command, Recordset o Record especificado.
Establece o devuelve un valor de tipo String que contiene
un comando de proveedor, como una instrucción SQL, un nombre de tabla, una
dirección URL relativa o una llamada a un procedimiento almacenado. El valor
predeterminado es "" (cadena de longitud cero).
Ø Propiedad CommandTimeout:
Indica el tiempo
que se va a esperar durante la ejecución de un comando para que finalice el
intento y se genere un error.
Establece o devuelve un valor de tipo Long que indica, en
segundos, cuánto tiempo se va a esperar a que se ejecute un comando. El valor
predeterminado es 30.
Ø
Propiedad CommandType: Indica el tipo
de un objeto Command. Establece o devuelve uno o varios valores de
CommandTypeEnum.
Utilice la propiedad CommandType para
optimizar la evaluación de la propiedad CommandText..
Ø Propiedad Name: Indica
el nombre de un objeto. Establece o devuelve un valor de tipo String que indica
el nombre de un objeto.
Utilice la propiedad Name para asignar
un nombre a un objeto Command, Property, Field o Parameter o para recuperar el
nombre de cualquiera de éstos.
Los objetos Command tienen una
colección Parameters formada por objetos Parameter.
Indica si se va a guardar una versión compilada de un
comando antes de la ejecución.
Contiene todos los objetos Property para una instancia
específica de un objeto.
En todos los objetos aplicables indica si el estado del
objeto es abierto o cerrado.
Indica,
para todos los objetos aplicables ejecutan un método asincrónico, si el estado
actual del objeto es conectando, ejecución o recuperación.
MÉTODOS:
Ø Método
Cancel: Cancela la ejecución de una llamada de
método asincrónico pendiente.
·
Sintaxis: objeto.
Cancel
Utilice
el método Cancel para finalizar la ejecución de una llamada a método
asincrónica (es decir, un método invocado con la opción adAsyncConnect,
adAsyncExecute o adAsyncFetch).
Ø
Método CreateParameter: Crea
un nuevo objeto Parameter con las propiedades especificadas.
·
Sintaxis:
Establecer
parámetro = comando.CreateParameter (Nombre, tipo, dirección, tamaño, valor)
Devuelve
un objeto Parameter.
·
Sintaxis:
ü
Name:
Es opcional. Valor de tipo String que contiene el nombre del objeto Parameter.
ü
Type:
Es opcional. Valor de DataTypeEnum que especifica el tipo de datos del objeto
Parameter.
ü
Direction:
Es opcional. Valor de ParameterDirectionEnum que especifica el tipo del objeto
Parameter.
ü
Size:
Es opcional. Valor de tipo Long que especifica la longitud máxima del valor de
parámetro, en caracteres o bytes.
ü
Valor:
Es opcional. Variant que especifica el valor del objeto Parameter.
NOTA:
Utilice
el método CreateParameter para crear un nuevo objeto Parameter con un nombre,
un tipo, una dirección, un tamaño y un valor especificados. Cualquier valor que
pase en los argumentos se escribe en las correspondientes propiedades de
Parameter.
Ø Método
Execute (Objeto Command de ADO): Ejecuta la
consulta, la instrucción SQL o el procedimiento almacenado especificados en la
propiedad CommandText.
· Sintaxis: Para un comando que devuelve un objeto
Recordset: Devuelve una referencia a un objeto Recordset o Nothing.
· Parámetros:
ü RecordsAffected: Es opcional. Variable Long a la que el
proveedor devuelve el número de registros que se ven afectados por la
operación. El parámetro RecordsAffected se aplica solo a las consultas de
acción o a los procedimientos almacenados. RecordsAffected no devuelve el
número de registros devueltos por un procedimiento almacenado o una consulta
que devuelve resultados. Para obtener esta información, use la propiedad
RecordCount. El método Execute no devolverá la información correcta cuando se
utilice con adAsyncExecute, simplemente porque al ejecutarse un comando
asincrónicamente, puede que aún se desconozca el número de registros afectados
en el momento en que el método devuelve un valor.
ü Parameters: Es opcional. Matriz de tipo Variant de
los valores de parámetro pasados con una instrucción SQL. (Los parámetros de
salida no devolverán valores correctos cuando se pasen en este argumento.)
Ø Options: Es opcional. Valor de tipo Long que
indica cómo el proveedor debe evaluar la propiedad CommandText del objeto
Command. Puede ser un valor de máscara de bits formado con valores de
CommandTypeEnum y/o ExecuteOptionEnum. Por ejemplo, puede utilizar adCmdText y
adExecuteNoRecords conjuntamente si desea que ADO evalúe el valor de la
propiedad CommandText como texto y si desea indicar que el comando debe
descartar y no devolver ningún registro que pueda generarse cuando se ejecute
el texto del comando.
EJEMPLOS:
Aunque
no es un uso habitual del objeto Command, el código siguiente muestra el método
básico para usar este objetocon el fin de ejecutar un comando en un origen de
datos. En este caso, se trata de un comando que devuelve filas, por tanto,
devuelve los resultados de la ejecución del comando en un objeto Recordset.
'BeginBasicCmd
On Error GoTo ErrHandler:
Dim objConn As New
ADODB.Connection
Dim objCmd As New ADODB.Command
Dim objRs As New ADODB.Recordset
objCmd.CommandText = "SELECT
OrderID, OrderDate, " & _
"RequiredDate, ShippedDate
" & _
"FROM Orders " & _
"WHERE CustomerID = 'ALFKI'
" & _
"ORDER BY OrderID"
objCmd.CommandType = adCmdText
' Connect to the data source.
Set objConn = GetNewConnection
objCmd.ActiveConnection = objConn
' Execute once and display...
Set objRs = objCmd.Execute
Debug.Print "ALFKI"
Do While Not objRs.EOF
Debug.Print vbTab & objRs(0)
& vbTab & objRs(1) & vbTab & _
objRs(2) & vbTab &
objRs(3)
objRs.MoveNext
Loop
'clean up
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing
Set objCmd = Nothing
Exit Sub
ErrHandler:
'clean up
If objRs.State = adStateOpen Then
objRs.Close
End If
If objConn.State = adStateOpen
Then
objConn.Close
End If
Set objRs = Nothing
Set objConn = Nothing
Set objCmd = Nothing
If Err <> 0 Then
MsgBox Err.Source &
"-->" & Err.Description, , "Error"
End If
'EndBasicCmd
El comando que se va a ejecutar se especifica con la propiedad
CommandText.
Un SqlCommand se utiliza cuando
necesitas ejecutar un
tipo de sentencia Sql a la base de datos (los tipos
pueden ser: Delete, Update, Insert o Select). Por su parte el
SqlDataAdapter se utiliza si requieres ejecutar más de un
tipo de sentencia Sql o si trabajarás en escenarios desconectados.
public List Listar()
{
SqlConnection con =
new SqlConnection(cadenaConexion);
SqlCommand com = new
SqlCommand("LISTAR_CAMPANAS", con);
com.CommandType =
System.Data.CommandType.StoredProcedure;
con.Open();
SqlDataReader
drCampanas = com.ExecuteReader();
List listaCampanas =
new List();
while
(drCampanas.Read())
{
listaCampanas.Add(Cargar(drCampanas));
}
drCampanas.Close();
con.Close();
return listaCampanas;
}
Son varios los ejemplos de esta sección que llaman a una función de
utilidad, GetNewConnection, para establecer una conexión con el proveedor de
datos. Para evitar la redundancia, aparece sólo una vez:
'BeginNewConnection
Private Function GetNewConnection() As ADODB.Connection
Dim oCn As New ADODB.Connection
Dim sCnStr As String
sCnStr =
"Provider='SQLOLEDB';Data Source='MySqlServer';" & _
"Integrated
Security='SSPI';Database='Northwind';"
oCn.Open sCnStr
If oCn.State = adStateOpen Then
Set GetNewConnection = oCn
End If
End Function
'EndNewConnection
Un SqlCommand
se utiliza cuando necesitas ejecutar un tipo de sentencia
Sql a la base de datos (los tipos pueden ser: Delete, Update, Insert o
Select). Por su parte el SqlDataAdapter se utiliza si requieres ejecutar más de
un tipo de sentencia Sql o si trabajarás en escenarios desconectados.
public
List Listar()
{
SqlConnection con = new
SqlConnection(cadenaConexion);
SqlCommand com = new
SqlCommand("LISTAR_CAMPANAS", con);
com.CommandType =
System.Data.CommandType.StoredProcedure;
con.Open();
SqlDataReader drCampanas =
com.ExecuteReader();
List listaCampanas = new List();
while (drCampanas.Read())
{
listaCampanas.Add(Cargar(drCampanas));
}
drCampanas.Close();
con.Close();
return listaCampanas;
}
Ejemplo
de SqlDataAdapter (basado en el ejemplo anterior pero levemente
modificado):
public
List Listar()
{
SqlConnection con = new SqlConnection(cadenaConexion);
SqlCommand com = new
SqlCommand("LISTAR_CAMPANAS", con);
com.CommandType =
System.Data.CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(com);
con.Open();
SqlDataReader drCampanas =
da.SelectCommand.ExecuteReader();
List listaCampanas = new List();
while (drCampanas.Read())
{
listaCampanas.Add(Cargar(drCampanas));
}
drCampanas.Close();
con.Close();
return listaCampanas;
}
También
puede utilizar un comando cuando llame a un procedimiento almacenado. El código
siguiente llama a un procedimiento almacenado en la base de datos de ejemplo
Neptuno, denominado CustOrdersOrders, que se define como se indica a
continuación:
CREATE
PROCEDURE CustOrdersOrders @CustomerID nchar(5) AS
SELECT
OrderID, OrderDate, RequiredDate, ShippedDate
FROM
Orders
WHERE
CustomerID = @CustomerID
ORDER
BY OrderID
Este
procedimiento almacenado es similar al comando utilizado en Parámetros del
objeto Command, en cuanto a que toma un parámetro identificador de cliente y
devuelve información sobre los pedidos de ese cliente. El código siguiente
utiliza este procedimiento almacenado como origen para un conjunto de registros
de ADO.
'BeginAutoParamCmd
On Error GoTo ErrHandler:
Dim objConn As New ADODB.Connection
Dim objCmd As New ADODB.Command
Dim objParm1 As New ADODB.Parameter
Dim objRs As New ADODB.Recordset
' Set CommandText equal to the stored procedure name.
objCmd.CommandText = "CustOrdersOrders"
objCmd.CommandType = adCmdStoredProc
' Connect to the data source.
Set objConn = GetNewConnection
objCmd.ActiveConnection = objConn
' Automatically fill in parameter info from stored procedure.
objCmd.Parameters.Refresh
' Set the param value.
objCmd(1) = "ALFKI"
' Execute once and display...
Set objRs = objCmd.Execute
Debug.Print objParm1.Value
Do While Not objRs.EOF
Debug.Print vbTab & objRs(0) & vbTab & objRs(1) & vbTab & _
objRs(2) & vbTab & objRs(3)
objRs.MoveNext
Loop
' ...then set new param value, re-execute command, and display.
objCmd(1) = "CACTU"
Set objRs = objCmd.Execute
Debug.Print objParm1.Value
Do While Not objRs.EOF
Debug.Print vbTab & objRs(0) & vbTab & objRs(1) & vbTab & _
objRs(2) & vbTab & objRs(3)
objRs.MoveNext
Loop
'clean up
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing
Set objCmd = Nothing
Set objParm1 = Nothing
Exit Sub
ErrHandler:
'clean up
If objRs.State = adStateOpen Then
objRs.Close
End If
If objConn.State = adStateOpen Then
objConn.Close
End If
Set objRs = Nothing
Set objConn = Nothing
Set objCmd = Nothing
Set objParm1 = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
'EndAutoParamCmd
2.
RESUMEN
Puede
usar el objeto Command para solicitar cualquier tipo de operación del
proveedor, suponiendo que éste pueda interpretar correctamente la cadena del
comando. Una operación común para los proveedores de datos es la de consultar
una base de datos y devolver registros en un objeto Recordset. Los objetos
Recordset se tratarán más adelante en éste y otros capítulos; por ahora,
considérelos como herramientas para contener y ver conjuntos de resultados. Al
igual que ocurre con muchos objetos ADO, según la funcionalidad del proveedor,
algunas colecciones de objetos Command, métodos o propiedades podrían generar
errores al hacer referencia a ellos.
Se
debe usar un objeto Command si necesita volver a usar un comando en el código o
si debe pasar información detallada de parámetros con el comando. Estos
escenarios se describen con más detalle posteriormente en este capítulo.
Algunos objetos Command pueden devolver un conjunto de resultados como una
secuencia binaria o un único registro, en vez de un objeto Recordset, si el
proveedor admite esa posibilidad. Además, algunos objetos Command no devuelven
ningún conjunto de resultados. Este capítulo tratará el escenario más típico:
ejecutar objetos Command que devuelven resultados en un objeto Recordset. Para
obtener más información acerca de los resultados devueltos en objetos Record o
Stream.
Con las colecciones, los métodos y las propiedades de un
objeto Command, puede
definir el texto ejecutable del utilizando la propiedadCommandText. consultas parametrizadas o argumentos de
procedimientos almacenados utilizando objetos Parameter y la colecciónParameters. Ejecutar un comando y devolver un objeto Recordset, si procede, usando el
método Execute. Especificar
el tipo de comando mediante la propiedad CommandType antes de la ejecución para optimizar el
rendimiento. Controlar si el proveedor guarda una versión preparada (o
compilada) del comando antes de la ejecución mediante la propiedad Prepared.Establecer el número de
segundos que esperará un proveedor para la ejecución de un comando mediante la
propiedad CommandTimeout.
Asociar una conexión abierta con un objeto Command estableciendo su propiedad ActiveConnection. Pasar un
objeto Command a la
propiedad Source de
un conjunto de registros para
obtener datos.
3. SUMMARY
You
can use the Command object to recognize any type of provider operation,
assuming that you can correctly interpret the command string. A common business
for data providers is to query a database and convert records into a Recordset
object. Recordset objects will be discussed later in this and other chapters;
For now, consider how tools to contain and view result sets. As with many ADO
objects, depending on the functionality of the provider, some collections of
Command objects, methods or properties generate errors when referring to them.
An
object must be used. Command if you need to reuse a command in the code and
pass the detailed parameter information with the command. These scenarios are
described in more detail later in this chapter. Some objects The command can
convert a result set as a binary stream or a single record, rather than a
Recordset object, if the provider supports that possibility. Also, some Command
objects do not return any result set. This chapter covers the most typical
scenario: running Command objects that return results in a Recordset object.
For more information about the results returned in Record or Stream objects.
With
the collections, methods, and properties of a Command object, you can define
the feasible text of theCommandText property. Parameterized or stored procedure
arguments using Parameter objects and the Parameters collection. Run a command
and return a Recordset object, if applicable, using the Execute method. Specify
the command type by using the CommandType property before execution to optimize
performance. Control the vendor of a prepared (or compiled) version of the
command before execution by the Prepared property. Set the number of seconds a
vendor expected to execute a command by using the CommandTimeout property.
Associate an open connection with a Command object by setting its
ActiveConnection property. Pass an object Command to the Source property of a
recordset to get data.
4.
RECOMENDACIONES
Algunos
objetos Command pueden devolver un conjunto de resultados como una secuencia
binaria o un único registro, en vez de un objeto Recordset, si el proveedor
admite esa posibilidad.
Además, algunos objetos Command no devuelven
ningún conjunto de resultados (por ejemplo, una consulta Update de SQL). Este
capítulo tratará el escenario más típico: ejecutar objetos Command que
devuelven resultados en un objeto Recordset. Para obtener más información
acerca de los resultados devueltos en objetos Record o Stream, vea Capítulo 10:
Objetos Record y Stream.
Las
aplicaciones de desarrollo hoy, ya es normal que se conectará a una base de
datos, ejemplos comerciales que tenemos en nuestras narices, especialmente en
internet (Google, Facebook, correo electrónico, etc.), usan la base de datos de
gran volumen.
Por esta razón se considera importante tener
desarrollo entorno como e.g. .NET y por lo tanto, ADO.NET, que es una base de
datos versátil y eficiente de la tecnología de acceso a gerente. NET, que
facilitan y maximizar el desarrollo de aplicaciones con acceso a bases de mucho
más rápidamente y con mejor rendimiento.
5.
CONCLUSIONES
El
objeto Command está diseñado para fundamentarse en la fuerza del modelo de
programación de las colecciones, los métodos y las propiedades de un objeto Command,
mientras que provee una evolución en la tecnología de acceso a datos para
responder a las necesidades cambiantes del desarrollador. Está diseñado para
fortalecer tus conocimientos de un objeto Command, mientras que provee un
control más fino sobre los componentes, recursos y comportamiento de tu
aplicación cuando accede y trabaja con datos.
6. APRENCIACION DEL EQUIPO
Este
trabajo nos ha facilitado y permitido conocer las herramientas necesarias para sensibilizar a los participantes hacia la integración en grupo, así como las
habilidades básicas para orientarse al trabajo de acuerdo a este tema de
objetivo commnand en el cumplimiento de los objetivos y metas que se requiere
para la organización de aplicaciones de base de datos.
7. GLOSARIO DE TERMINOS
Clase SqlCommand. Representa un
procedimiento almacenado o una instrucción de Transact- SQL que se ejecuta en
una base de datos de SQL Server. Esta clase no puede heredarse.
DataSet: Representa una caché de
datos en memoria.
Banco de datos: o también llamado base
de datos es un conjunto de datos pertenecientes a un mismo contexto y
almacenados sistemáticamente para su posterior uso.
Data
Provider: Proveedor de
datos. Proveedores de datos de .NET Framework. Un proveedor
de datos de .NET Framework sirve para conectarse a una base de datos, ejecutar comandos y recuperar resultados.
Los objetos Recordset se usan para
manipular los datos de una base de datos en el nivel de registro. Un objeto Recordset de tipo
conjunto de registros dinámicos puede contener campos de una o varias tablas de
una base de datos. Este tipo corresponde a un cursor de conjunto de claves ODBC.
8.
LINKOGRAFIA
ühttp://isaacsalgado.com/2011/04/07/introduccion- ado-net-escenario-conectadodesconectado-parte-1/
ü http://www.monografias.com/trabajos93/ado-net-
No hay comentarios:
Publicar un comentario