DESARROLLADOR
Introducción a Bases de Datos en ASPPor Ronald Flores, Puerto Rico Internet News
|
|
|
Uno de los retos mayores para todo desarrollador de web es poder proveer información dinámica y actualizable. Esto se hace difícil ya que la forma intrínseca en que se maneja una pagina web hace difícil actualizar datos de forma sencilla y practica.
No obstante, existe una manera de manejar datos en línea desde una pagina web utilizando los servicios de datos dinámicos de tu servidor de web para acceder datos almacenados en una base de datos. Existen diferentes metodos y varian de plataforma en plataforma. Algunos ejemplos populares de bases de datos en el web son MySQL, Microsoft SQL Server, PostGRE Sql, y otros. Estas bases de datos sirven como una plataforma para almacenar datos y otros elementos en un archivo, y los servicios de su aplicacion de servidor tienen la capacidad de conectarse a estos archivos a nivel de servidor mediante conectores o proveedores de datos. El mas sencillo es Microsoft Access y lo utilizaremos en este ejemplo.
En este articulo veremos como conectar una pagina de internet en ASP a una base de datos MS Access.Adicionalmente, este articulo asume que usted tiene conocimientos de como crear y abrir un archivo de Access, como crear y editar tablas, y como subir y manejar archivos desde su PC.
Determinando la Data
El paso inicial es determinar el set de datos a ser utilizado. Para este ejemplo, crearemos una base de datos en Access, le llamaremos “misdatos.mdb”. Dentro de este database, crearemos una tabla llamada “misdatos” con los siguientes campos:
fldID: Auto número con INDEX KEY str_nombre: texto, 50 caracteres de largo str_apellidos: texto, 50 caracteres de largo str_email: texto, 50 caracteres de largo
Cuando este lista su base de datos, súbala a alguna carpeta de su servidor. Es muy importante que el archivo este en algun lugar seguro debido a que lo importante es asegurarse de que nadie pueda acceder su base de datos de forma ilegal. Un truco es crear una carpeta que comience con “underscore” como por ejemplo /_db/ debido a que IIS esconde estas carpetas al publico.
Otra consideración es que si usted determina que el archivo será actualizable desde el web, la carpeta donde ubique la base de datos tiene que tener privilegios de leer y escribir (“read and write rights”) para el usuario IUSR de su servidor. Esto puede ser algo complicado. La forma mas sencilla es escoger la carpeta y con su programa de FTP cambie el mode (“CHMOD”, F7 en muchos programas de FTP) de la carpeta a “777”.
Listo. Una vez la base de datos esté en el servidor estamos listos a integrar la misma a nuestra página.
Creando la Conexión El segundo paso para habilitar con datos su página es creando una conexión al archivo de Access que servirá como puente para enlazar nuestro código con la base de datos. Existen muchísimas formas y diversos proveedores para conectar una base de datos a ASP. En este ejemplo, utilizaremos los elementos del objeto ADODB el cual ya está integrado en su instalación de IIS.
La conexión es un método de ADODB que sirve para conectar la base de datos al objeto de ADO (“Advanced Data Objects”). La siguiente función crea una conexión de ADO a nuestro archivo misdatos.mdb localizado en /root/_db/ y devuelve un objeto de conexión ADO para ser utilizado por otros métodos:
<% Function get_conn() Dim str_conn str_conn = “Provider=Microsoft.Jet.OLEDB.4.0;DataSource=” & Server.MapPath(“/_db/misdatos.mdb”) Set oConn = Server.CreateObject(“ADODB.Connection”) oConn.Open str_conn set get_conn = oConn end function
function close_conn(cConn) cConn.Close set cConn = Nothing end function %> Haga nota de que en la función, el parámetro de Server.MapPath es el lugar físico donde se encuentra la base de datos, en este caso, /_db/misdatos.mdb. Una vez tenemos esta función, es mas fácil conectar a la base de datos cada vez que necesitemos acceder la misma.
Conectándose a la Base de Datos y nuestro primer RecordSet Una vez usted se conecta a la base de datos ya puede hacer uso de los elementos de un RecordSet – una colección de datos provenientes de un objeto de datos. Para crear nuestro primer RecordSet (RS), utilizamos el siguiente código:
<% dim RS, MiConn set MiConn = get_conn() inSql = “SELECT * from usuarios” set RS = MiConn.Execute(inSql) %>
Veamos lo que hace este código. Primero en la línea dos, definimos los nombres de variables que van a manejar nuestro programa. En la línea 3, llamamos la función que creamos anteriormente (get_conn) y le asignamos el resultado de la función a la variable Conn. En otras palabras, MiConn se convierte en una variable que hace referencia al objeto de conexión que hemos creado.
La línea 4 es un argumento en lenguage SQL (“Simple Query Language”) el cual le dice a la conexión qué elementos de la tabla debe buscar. El ejemplo arriba dice, usando el método SELECT del lenguaje SQL, que escoja todos los elementos dentro de la tabla usuarios. Más adelante hablaremos mas sobre el lenguaje SQL.
El siguiente ejemplo verifica que la conexión haya sido hecha exitosamente y que el RecordSet ha sido abierto correctamente:
<% Response.write “Se encontraron “ & RS.RecordCount & “ records en la tabla usuarios.” %>
Este código usa el elemento .RecordCount el cual devuelve la cantidad de records contenidos dentro del RecordSet, en este caso, 4.
Navegando la Tabla de Resultados (“RecordSet”) Ya que sabemos cómo conectarnos a una base de datos Access y cómo abrir una tabla de resultados o RecordSet, veamos como navegar los records dentro de la tabla. El siguiente ejemplo utiliza un método muy importante llamado MoveNext.
<% do until RS.EOF response.write RS(“str_nombre”) & “” RS.MoveNext loop RS.MoveFirst %>
En este ejemplo utilizamos el método DO para hacer un proceso recursivo, con la condición RS.EOF. En otras palabras, todos los argumentos contenidos entre el marcador DO y el limtiador LOOP serán ejecutados recursivamente hasta que la condición establecida en el DO se cumpla. EOF es un marcador que señala que se ha llegado al final del archivo o al final del RecordSet, en cual caso .EOF será TRUE. En nuestra tabla de muestra tenemos cuatro elementos, por lo cual el script correrá estas instrucciones cuatro veces.
No obstante, en la línea 3 vemos la forma de llamar el contenido de un campo dentro de la tabla, usando el nombre del campo como parámetro. En la línea 4, vemos el comando .MoveNext. Este comando isntruye al RecordSet a moverse al próximo Record. En este caso, como la condición del DO ... LOOP es EOF, si no avanzamos al próximo record el programa entra en un loop infinito, siendo este uno de los errores más realizados por programadores de ASP. De igual forma, la instrucción MoveFirst mueve el RecordSet al primer record en el resultado.
Usando Variables
Usted también puede almacenar el contenido de un campo del record en variables para poder ser reutilizadas mas adelante.
<% Do until RS.EOF str_nombre = rs(“str_nombre”) str_apellidos = rs(“str_apellidos”) str_email = rs(“email”) %> Nombre: <%=str_apellidos%>, <%=str_nombre%> (<%=str_email%>)
<% RS.MoveNext Loop %>
En el ejemplo anterior, expandimos las instrucciones dentro del DO...LOOP. De forma inicial (líneas 3 al 5) almacenamos los contenidos de los campos a tres variables reutilizables. Luego, dividimos el bloque de código para utilizar instrucciones dinámicas dentro de HTML para reemplazar las variables insertadas, luego en la línea 11 llamamos MoveNext. Esto nos permite ser mas creativos al momento de utilizar datos dentro de la base de datos en código HTML convencional, ya que al cerrar el area de codigo ASP en la línea 6 a la 9 podemos utilizar código HTML regular pero aún así integrar variables de ASP usando el atajo <%=nombreVariable%>.
Limpiando y Cerrando Todo Un elemento muchas veces olvidado por muchos programadores de ASP es que es necesario dejar todo recogido después de terminar un proceso o un programa. En el caso de objetos de datos no es ninguna diferencia. De hecho, uno de los problemas principales de los servicios de ADO de Microsoft IIS es lo que se conoce como fugas de memoria o “memory leaks”. Esto sucede cuando olvidamos cerrar o destruir objetos en memoria luego de utilizarlos. La forma correcta de limpiar todo luego de finalizar con el objeto de ADO es cerrarlo y luego hacerle un set a ‘Nothing’.
<% RS.Close MiConn.Close set RS = nothing set MiConn = nothing %>
Eso es todo por este artículo, ¡pendiente a más artículos de interés para el programador solo en Puerto Rico Internet News!
Este artículo ha sido visto 613 veces.
Más artículos y Noticias
|