DESARROLLADOR

Introducción a Bases de Datos en ASP


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!



Artículos Relacionados

SP1 de Vista se cuelga con Universidad de Pennsylvania 3/22/2008 8:33:23 AM

This article has been seen 2029 times.
More News and Articles
 
 
Tecnología | Productos Nuevos
Samsung lanza dispositivo que competirá con el iPad de Apple
La empresa Samsung anunció el jueves su nueva tableta PC llamada Galaxy Tab, la cual forma parte de una reciente hilera de dispositivos enfocados en competir con el popular iPad de Apple.
Por Ronald Flores | 9/3/2010 @7:18:53 PM

Internet | Comunicaciones y Telefonía
Google lanza competencia contra Skype
La empresa Google lanzó esta semana el servicio Google Talk, una aplicación incluida dentro del servicio GMail que permite a sus usuarios realizar llamadas telefónicas a líneas terrestres, tal como si utilizara un teléfono convencional.
Por Ronald Flores | 8/30/2010 @7:37:33 AM

Tecnología | Celulares y Equipos Móviles
RIM lanza Blackberry Torch
Con poco ruido y nada de filas largas fue lanzado el nuevo Blackberry Torch, la más reciente actualización de los populares dispositivos mobiles por la empresa Research in Motion (RIM).
Por Ronald Flores, Puerto Rico Internet News | 8/29/2010 @6:19:11 PM

Internet | Aplicaciones y Software
IE9 estará disponible desde septiembre 15 2010
Cerca de 2.5 instalaciones de Internet Explorer 9 PREVIEW BETA han sido descargadas de su sitio web, según señala Microsoft en un intento de crear momentum para el lanzamiento de la más reciente iteración de su navegador de Internet.
Por Ronald Flores, Puerto Rico Internet News | 8/29/2010 @6:20:20 PM

Internet | Sitios Nuevos
Baby's Planet anuncia rediseño de su página
Baby's Planet, una cadena de tiendas que ofrece todo tipo de productos para bebés, anunció este mes el lanzamiento de su renovada página en el internet, www.babysplanet.com.
Por Ronald Flores, Puerto Rico Internet News | 8/29/2010 @6:22:08 PM