Objeto de comando ADO | TIEngranaje

¿Qué es el objeto de comando ADO y cómo se relaciona con TIEngranaje? Si eres un desarrollador de aplicaciones en busca de respuestas, ¡estás en el lugar indicado! En este artículo te explicaremos todo acerca de este potente objeto y cómo puedes usarlo para mejorar tus proyectos en TIEngranaje. ¡Acompáñanos en este recorrido a través del mundo de la programación y descubre lo que el objeto de comando ADO tiene para ofrecerte!

El objeto Comando ADO tiene la funcionalidad de ejecutar comandos contra la fuente de datos, normalmente una base de datos. En general, el objeto Comando se crea implícitamente al ejecutar una operación contra la base de datos. Por lo tanto, usted por lo general no crea este objeto de manera explícita.

Implícitamente, puede hacer esto con el objeto Connection Execute() o con el método RecordSet Open. Cada uno de estos métodos acepta como argumento de CommandText.

Mientras que la CommandText suele ser una instrucción SQL, también puede ser un procedimiento almacenado. El objeto Comando contiene la colección de parámetros que permite el uso de parámetros junto con el objeto Command.

Sintaxis

Para crear el objeto Command, use lo siguiente sintaxis.

<%
Set oCmd = Server.CreateObject("ADODB.Command")
%>

Ejemplos

En este ejemplo, crearemos explícitamente ambos el objeto Command y Recordset.

<%
Dim oConn, oRS, oCmd, ds, sql
ds = "Driver={MySQL ODBC 3.51 Driver};SERVER=db-hostname;DATABASE=db-name;UID=userID;PWD=password"
sql = "SELECT empName, empTitle FROM employees"

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open ds

Set oCmd = Server.CreateObject("ADODB.Command") 
oCmd.ActiveConnection = oConn
oCmd.CommandText = sql
oCmd.CommandType = 1
oCmd.Prepared = True

Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.Open oCmd
%>

En el siguiente ejemplo, creamos el objeto Command explícitamentepero el objeto Recordset implícitamente.

<%
Dim oConn, oRS, oCmd, datasource, sql
datasource = "Driver={MySQL ODBC 3.51 Driver};SERVER=db-hostname;DATABASE=db-name;UID=userID;PWD=password"
sql = "SELECT empName, empTitle FROM employees"

Set oConn = Server.CreateObject("ADODB.Connection")
Set oCmd = Server.CreateObject("ADODB.Command") 

oCmd.ActiveConnection = oConn
oCmd.CommandText = sql
oCmd.CommandType = 1
oCmd.Prepared = True

oConn.Open datasource
set oRs = oCmd.Execute()
%>

El objeto Comando nos da la habilidad de trabajar con parámetros. Se recomienda este enfoque y es uno de los componentes que necesita incluir en tu estrategia cuando proteger su aplicación de ataques de inyección SQL.

<%
Dim oConn, oRS, oCmd, ds, sql, qs
ds = "Driver={MySQL ODBC 3.51 Driver};SERVER=db-hostname;DATABASE=db-name;UID=userID;PWD=password"
sql = "SELECT empName, empTitle FROM employees WHERE empID = ?"
qs = Request.Querystring("id")
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open ds

Set oCmd = Server.CreateObject("ADODB.Command") 
oCmd.ActiveConnection = oConn
oCmd.CommandText = sql
oCmd.CommandType = 1
oCmd.Prepared = True
oCmd.Parameters(0) = qs
oCmd.CommandTimeout = 900

set oRs = oCmd.Execute()
%>

Como puede ver en el ejemplo anterior, nuestra consulta SQL incluye el WHERE cláusula para que sus resultados solo incluyan datos de un empleado específico. El uso de parámetros nos permite tratar la información almacenada en la cadena de consulta como texto literal.

Entonces, incluso si el atacante intentara modificar la cadena de consulta e incluir otras declaraciones SQL, el El servidor SQL no ejecutaría el código. El siguiente enfoque para construir una consulta SQL es no recomendado.

sql = SELECT empName, empTitle FROM employees WHERE empID = " & [Input from the User]

esta entrada puede contener código SQL que será procesado por el servidor SQL. Por ejemplo, un usuario malintencionado puede obtener acceso a registros adicionales o DROP una tabla.

Para proteger contra la inyección de SQLrestrinja y valide la entrada del usuario y use parámetros con procedimientos almacenados, o use parámetros con SQL dinámico.

Propiedades del objeto de comando

Propiedad Descripción
ActiveConnection Establece o devuelve una definición para una conexión.
CommandText Establece o devuelve un comando de proveedor.
CommandTimeout Establece o devuelve el número de segundos de espera al intentar ejecutar un comando.
CommandType Establece o devuelve el tipo de un objeto Command.
Name Establece o devuelve el nombre de un objeto Command.
Prepared Establece o devuelve un valor booleano. True mejora el rendimiento en consultas posteriores.
State Devuelve el estado del objeto (open, closed, connecting, executingo retrieving data).

Métodos de objeto de comando

Método Descripción
Cancel Cancela un método de ejecución.
CreateParameter Crea un parámetro.
Execute Ejecuta la consulta, sentencia SQL o procedimiento en el CommandText propiedad.

Colecciones de objetos de comando

Recopilación Descripción
Parameters Contiene los objetos de parámetro.
Properties Contiene los objetos Property.

trabajando con ado.net comando executeScalar parte 1

Aplicacion que se basa en la tecnologia ado.net usando la base de datos northwind usando el comando executeScalar... origen: ...

Deja un comentario