¿Te interesa conocer cómo interactúa ADO con la base de datos en tus proyectos de desarrollo web? ¡Estás en el lugar correcto! En este artículo de TIEngranaje te explicamos todo lo que necesitas saber sobre ADO consultando una base de datos. Descubre cómo esta tecnología facilita la gestión de tus datos y optimiza el rendimiento de tus aplicaciones web. ¡Sigue leyendo!
En la mayoría de los casos, si está ejecutando una aplicación web que incluye secuencias de comandos del lado del servidor, como ASP, lo más probable es que esté proporcionando contenido dinámicont a sus visitantes al aceptar la entrada y mostrar los resultados de los datos almacenados en una base de datos como MySQL o MSSQL.
En este tutorial, cubriremos cómo crear algunas consultas SQL que puede usar para recuperar información de su base de datos.
En el siguiente ejemplosnos conectaremos a una base de datos MySQL y consultaremos los registros de una tabla llamada Employees
. El primer paso es crear una página ASP e incluir algunos de los componentes típicos de HTML.
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<-- Add in HTML and ASP Code -->
</body>
</html>
El siguiente paso es agregue nuestro código ASP entre el principio y el final <body>
etiquetas Nuestro código ASP inicial simplemente incluirá la creación de nuestras variables y objetos. Observe dónde asignamos nuestra consulta SQL a la sql
variable.
<%
Dim oConn 'Connection Object
Dim oRS 'Recordset Object
Dim ds 'datasource
Dim qs 'query string
Dim sql 'sql statement
ds = "Driver={MySQL ODBC 3.51 Driver};SERVER=db-hostname;DATABASE=db-name;UID=userID;PWD=password"
qs = Request.Querystring("id")
sql = "SELECT * 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
Bueno, regrese a la variable ‘sql’ en un momento porque veremos diferentes ejemplos al modificar esta declaración. El siguiente paso es mostrar los resultados. Usamos un bucle para recorrer los campos en el conjunto de registros. Por último, ordena.
do until oRS.EOF
for each x in oRS.Fields
Response.Write(x.name & "=" & x.value & "<br />")
next
Response.Write("<br />")
oRS.MoveNext
loop
oRS.close
oConn.close
Set oRS=nothing
Set oConn=nothing
%>
Los resultados de la muestra son los siguientes:
empID=1
empName=John Smith
empTitle=Sales Associate
empID=2
empName=Jane White
empTitle=CEO
empID=3
empName=Jim Bore
empTitle=Accountant
Consulta por un Registro Específico
Si estaba interesado en consultar solo un subconjunto de los datos, podemos modificar nuestra consulta SQL usando el WHERE
cláusula. En el siguiente ejemplo, solo queremos consultar la base de datos de un empleado que tiene una ID de 2
. Simplemente podemos modificar la variable sql
como sigue.
sql = "SELECT * FROM employees WHERE empID = 2"
Sin embargo, para que el sitio web sea más dinámica, preferiríamos tener la información proporcionada por el usuario. En este caso, asumiremos el escenario en el que un usuario hizo clic en un enlace en otra página web de la aplicación y el enlace contenía la información en la cadena de consulta. Podemos modificar la sintaxis de la siguiente manera.
sql = "SELECT * FROM employees WHERE empID = " & qs
NOTA: El ejemplo anterior no debe implementarse. Si bien técnicamente funcionará, es vulnerable a la inyección SQL porque la cadena de consulta se puede modificar para incluir comandos SQL adicionales. El enfoque recomendado es utilizar parámetros. Aquí hay un ejemplo. Primero, cambie la consulta SQL para incluir un parámetro usando un ‘?’ y en segundo lugar agregue el parámetro al objeto Comando.
sql = "SELECT * FROM employees WHERE empID = ?"
In the following section, add the parameter.. oCmd.ActiveConnection = oConn
oCmd.CommandText = sql
oCmd.CommandType = 1
oCmd.Parameters(0) = qs
Mediante el uso de parámetros, podemos enviar de forma segura a la base de datos el comando SQL, incluidos los datos de la cadena de consulta como un literal.