lunes, 10 de julio de 2017

OBJETO SQLCOMMAND






                                 "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.

Ø  Propiedad CommandText: Indica el texto de un comando que se va a emitir en un proveedor.

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.

Ø  Colección Parameters: Contiene todos los objetos Parameter de un objeto Command.
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.

Ø      Colección Properties
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