El acceso a bases de datos es uno de los recursos más utilizados en las páginas ASP, la facilidad con la que puede crear un sitio web dinámico queda patente en este taller en el que aprenderá los conceptos básicos sobre conexión a bases de datos.
Introducción
Las páginas ASP con acceso a datos permiten interactuar con la información de una base de datos ya sea para obtener información y mostrarla al usuario o bien para actualizar su contenido.
Son muchas las aplicaciones de este concepto en los sistemas de información actuales por ejemplo, una empresa que vende sus artÃculos por Internet debe disponer de páginas en las que se visualicen los datos de sus productos, disponibilidad, precio, etc. y almacenar los pedidos de sus clientes. Al tratarse de información en continua actualización la presencia de una base de datos y su consulta dinámica se hacen indispensables.
Para conectarse a una base de datos, las páginas ASP utilizan la tecnologÃa ADO (ActiveX Data Objects) y pueden accederse a sistemas de gestión de bases de datos comatibles con ODBC (entre otras SQL Server, Access, Informix o Oracle.)
Conexión
Pueden utilizarse dos sistemas de conexión a Base de Datos:
- Mediante DSN
- Sin DSN
DSN
Este sistema consiste en definir un identificador de la conexión mediante el driver ODBC accesible desde el Panel de Control. Posteriormente, desde las páginas ASP, se practica el acceso mediante un string de conexión que incluye el identificador antes mencionado.
Para crear un DSN en Windows, haz clic en el botón Inicio selecciona la opción Panel de Control del menú Configuración. En la ventana del Panel de Control selecciona Fuentes de Datos ODBC y accede a la pestaña DSN de Sistema. Selecciona la base de datos que quieres añadir y define un nombre a la conexión y la localización fÃsica de la base de datos
Sin DSN
Este sistema requiere almacenar directamente el archivo de la BD (habitualmente de Access) en un directorio del servidor. De este modo, en la conexión se utilizará un String un poco más complejo ya que deben identificarse tanto el driver como el directorio fÃsico completo de la base de datos.
Estos son los 3 pasos para realizar la conexión
- Crear el objeto para conectarase a la Base de datos mediante la instrucción Server.CreateObject("ADODB.Connection")
- Definir la conexión (con/sin DNS), mediante la instrucción objConn.ConnectionString
- Abrir la conexión mediante la instrucción: objConn.Open
<% Dim objConn 'Creación del objeto que realiza la conexión a la base de datos Set objConn = Server.CreateObject("ADODB.Connection") 'Proporcionar al objeto la información correspondiente a la conexión ODBC a utilizar 'Mediante DNS objConn.ConnectionString = "DSN=bdProgramacion" 'Sin DNS objConn.ConnectionString = "DBQ=C:mis documentosprogram.mdb;DRIVER={MS Access (*.mdb)}" 'Abrir la conexión objConn.Open %>
El lenguaje SQL
Mediante el lenguaje SQL (Structured Query Language) puedes interactuar con los motores de base de datos relacionales para obtener y modificar la información almacenada en la base de datos.
La información en una base de datos se almacena en tablas que a su vez se componen de columnas o campos. Para realizar una consulta a una tabla deberá utilizar la instrucción SELECT. En una consulta básica en la clasula SELECT se indican las columnas a visualizar, en la claúsula FROM, la tabla de la cual obtener los datos por último en la claúsula WHERE se indican las restricciones a aplicar.
SELECT * FROM clientes WHERE poblacion="Sevilla" SELECT nombre FROM Productos WHERE precio > 2000
Las operaciones de insertar, actualizar y borrar información de la base de datos también se realizan mediante instrucciones SQL concretamente utilizaremos INSERT, UPDATE y DELETE respectivamente.
Por ejemplo, la sentencia UPDATE se compone de la clausula SET para indicar el nuevo valor de los campos y WHERE para indicar los registros sobre los que se desea practicar la actualización.
INSERT INTO Productos (nombre, precio, distribuidor) VALUES ("Auriculares", 1730, "batech")
UPDATE Productos SET precio = precio + (0,02 * precio) WHERE distribuidor="ACME"
DELETE FROM Productos WHERE distribuidor="ACME"
Acceso a los datos
A continuación, practicará las instrucciones para que desde la página ASP pueda acceder a la información de la base de datos y mostrarla en la ventana del navegador del usuario
Suponga que tiene una tabla de Productos con las siguientes columnas: nombre, precio y distribuidor.
En la página ASP a crear visualizará aquellos productos cuyo precio sea inferior a los 30 Euros y para realizar esta consulta utilizará el objeto ADODB.Recordset
<% Dim objConn Dim objRS Dim strSQL Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "DSN=gestion" 'Inicialización del objeto Recordset Set objRS = Server.CreateObject("ADODB.Recordset") ' Construcción de la consulta mediante SQL strSQL = "SELECT nombre, precio FROM productos WHERE precio < 30" ' ejecución de la consulta objRS.Open strSQL, objConn %>
Como resulta de la anterior ejecución, el servidor obtiene un conjunto de registros procedentes de la base de datos y posiciona el cursor en el primero de ellos. El objeto recordset proporciona mecanismos para acceder a los diferentes campos y mover el cursor entre los diferentes registros. Puede conocer cómo mediante el siguiente código
<table> <tr><td>NOMBRE</td><td>PRECIO</td></tr> <% 'Bucle hasta encontrar EOF (final del cursor) Do Until objRS.EOF = True Response.Write "<tr>" 'objRS("nombre") y objRS("precio") contienen los valores 'de los campos nombre y precio de la Base de datos Response.Write "<td>Nombre= " & objRS("nombre") & "</td>" Response.Write "<td>Precio = " & objRS("precio") & "</td>" Response.Write "</td></tr>" 'Mover el cursor al siguiente registro. 'Cuando ya esté en el último registro EOF valdrá cierto. objRS.MoveNext Loop %> </table>
Cerrar conexiones
Es una práctica recomendable cerrar y borrar los objetos recordset y de conexión creados en la página ASP. Para ello se utiliza el código indicado a continuación:
<% 'Cerraar el objeto Recordset objRS.Close 'Eliminar el objeto Recordset Set objRS = Nothing 'Cerrar el objeto de la conexión objConn.Close 'Eliminar el objeto de la conexión Set objConn = Nothing %>
ADOVBS.INC
ADOVBS.INC es un archivo que se incluye con el servidor Internet Information Server y en el que se definen todas aquellas constantes utilizadas con objetos del ADO.
La inclusión de archivos es muy aconsejable para realizar código legible y rehutilizable dos caracterÃsticas imprescindibles en páginas de acceso a datos. Para ello se utiliza la instrucción include virtual que pertenece al juego de instrucciones del protocolo HTTP y cuya sintaxis es la siguiente:
<% <!-- #include virtual="/adovbs.inc" --> %>
En este caso deberá tener almacenado el archivo ADOVBS.INC en la raiz del directorio de su aplicación.