Guía de Implantación de las Extensiones ODBC para Perl-Win32

[Contenido]

[Anterior] [Siguiente]

 

 


Introducción

Con Perl existe la posibilidad de desarrollar diversas aplicaciones que le agreguen dinamismo a un sitio Web; en particular, con las extensiones ODBC para Perl Win-32 se añaden los beneficios que una base de datos ofrece. Estas extensiones permiten la interacción con una base de datos a través de los manejadores ODBC existentes.

En esta guía se detallarán los pasos a seguir para implantar tales extensiones sobre Windows NT Server y Windows 95.

Las condiciones en las que la práctica se llevo a cabo comprendían una PC con Procesador Intel 586 con 16 MB en memoria RAM, bajo el Sistema Operativo Windows NT Server 4.0 con los DBMS Access 7.0, FoxPro 2.6, Dbase IV y Paradox 5.0; para los cuales se utilizó el paquete de manejadores ODBC versión 3.0 de Microsoft.

Además se usó el Servidor Web Internet Information Server 2.0 y el Intérprete Perl Win-32 ver 5.001m (Revisión 106).

Adquisición De Software

Perl Win-32

Sino posee intérprete para Perl Win-32, especifique en su browser:

ftp://ftp.Linux.ActiveWare.com/pub/Perl-Win32/perl5.001m/106-i86.zip

El archivo 106-i86.zip posee un tamaño aproximado de 1.35 MB y contiene Perl Win-32 versión 5.001m revisión 106.

Extensiones ODBC para Perl Win-32.

Especifique en su Browser:

ftp://ftp.roth.net/pub/ntperl/win32odbc_v970208.zip . Este archivo contiene la revisión más reciente de las extensiones ODBC para Perl Win-32 y su tamaño es de 180 KB.

Instalación

Perl Win-32

Si no posee Perl Win-32, siga los siguientes pasos:

1. Desde ventana de comandos descomprimir archivo 106-i86.zip con UNZIP necesariamente, ya que se requiere expandir archivos con extensión larga:

C:\<Dir_Temporal>\UNZIP -d 106-i86.zip C:\

Es necesario usar como parámetro de UNZIP -d pues se debe expandir un árbol de directorio.

2. Cambiarse a directorio de Instalación de Perl y ejecutar install.bat:

C:\PERL\ install.bat

3. Volver a iniciar Sistema.

4. Cambiarse a subdirectorio NTT y ejecutar test.bat:

C:\PERL\NTT\ test.bat

Con lo cual se hará una prueba de instalación para Perl-Win32.

Extensiones ODBC para Perl Win-32

1. Desde ventana de comandos, descomprimir archivo win32odbc_v970208.zip con UNZIP necesariamente, pues se desea expandir archivos con extensión larga:

C:\<Dir_Temporal>\UNZIP -d win32odbc_v970208.zip

Es necesario usar como parámetro de UNZIP -d pues se debe expandir un árbol de directorio.

2. Copiar archivo ODBC.PLL que se encuentra en:

C:\<Dir_Temporal>\LIB\AUTO\WIN32\ODBC

al subdirectorio de Perl:

C:\PERL\LIB\AUTO\WIN32\ODBC

3. Copiar archivo ODBC.PM que se encuentra en :

C:\<Dir_Temporal>\LIB\WIN32

al subdirectorio de Perl:

C:\PERL\LIB\WIN32

Configuración

Para acceder una base de datos, a través del Web haciendo uso de las extensiones ODBC para Perl Win-32, es necesario crear la fuente de datos ODBC para la base de datos , así como también en el servidor Web asociar el intérprete de Perl con los archivos de extensión .pl .

Creación de Fuente de Datos ODBC para la Base de Datos

Cuando se cree una Fuente de Datos ODBC para una determinada base de datos, debe crearse como "System DSN", pues solo así será visible para todo usuario; y de esta forma el servidor Web es capaz de visualizarlo.

  1. Los pasos a seguir son:
  2. Elegir Grupo de Programas "ODBC Administrative 32-bit"
  3. Hacer clic en botón "DSN"(System DSN)
  4. Seleccionar botón ADD.
  5. Especificar detalles del nuevo ODBC:

Asociación de Intérprete Perl con archivos de extensión .pl

Para que un escrito Perl se comporte como CGI es necesario especificarlo en la configuración del Servidor Web. Esto varía dependiendo de cada Servidor, para el caso se detallan los pasos a seguir con el Internet Information Server 2.0:

  1. En ventana de ejecución , digitar Regedt32.
  2. Abrir HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameter\ScriptMap
  3. En menú Edit , elegir Addvalues y seleccionar como tipo de datos REG_SZ.
  4. Especificar extensión que poseerán escritos, para el caso .pl.
  5. En String Editor, digitar la ruta completa del intérprete a usar con los escritos .pl.
  6. Volver a iniciar Servidor Web.

Acceso a Escritos Perl

Los archivos Perl que hagan uso de las extensiones para ODBC deben poseer extensión .pl; y se invocan como cualquier escrito CGI:

http://<servidor_web>/<dir-cgi>/<aplicacion>.pl

<servidor_web>: Es la dirección IP o alias del servidor Web.

<dir-cgi>: Ruta del directorio de escritos CGI del servidor Web.

<aplicación>.pl: Escrito Perl que hace uso de Extensiones ODBC.

Ejemplo de Aplicación

Supóngase que se desea consultar un Grupo de discusión de Perl especificando el nombre del miembro en el siguiente formulario:

  • <HTML>

    <BODY>

    <H2>Consulte por Nombre</H2>

    <FORM METHOD=GET ACTION="/cgi-bin/consul.pl">

    <P>Nombre:<INPUT NAME="nombre" SIZE =40>

    <INPUT TYPE="SUBMIT" VALUE="CONSULTAR">

    </FORM>

    </BODY>

    </HTML>

  • El respectivo escrito Perl consul.pl ,especificado en el atributo ACTION del formulario anterior, hace uso de CGI_Lite.pm para descodificar los datos ingresados en el formulario y con ellos construye la sentencia SQL .

    El escrito consul.pl es el siguiente:

  • use Win32::ODBC;

    use CGI_Lite;

    $cgi = new CGI_Lite(); #descodificación de datos #ingresados en el formulario

    %results = $cgi->parse_form_data(); # hacia el arreglo results

    $condicion = "SELECT * FROM GruPerl";

    # Construcción del condicional de SELECT

    if ($results{‘nombre’}) {

    $condicion = join(" WHERE " , $condicion , " nombre = ‘results{‘nombre’}’ ");

    }

    $dsn = "Miembros";

    $handler = new win32::ODBC("DSN=$dsn;");

    if ($handler->sql($condicion)){ # Envío de sentencia SQL a la # base de datos

    print $sql->error, "\n";

    exit();

    }

    while($handler->fetchrow){ # Procesa e imprime resultados

    foreach ( $handler->fieldnames){

    $campo = $handler->data($_);

    print "$_ : $campo \n";

    }

    }

  • print "</PRE></BODY></HTML>" ;

    En este ejemplo con la sentencia use se cargan tanto el módulo de extensiones ODBC como el de descodificación de entrada de la forma. Las siguientes dos líneas procesan entrada de la forma hacia el arreglo results. Posteriormente se imprime tipo de contenido de la información a desplegar. En las restantes líneas se procesa la sentencia SQL SELECT que se enviará a la base de datos que tiene por ODBC "Miembros". Para finalmente desplegar los resultados obtenidos de la base de datos en el Browser.

    En el anterior escrito se han empleado los métodos más utilizados de las extensiones ODBC para Perl Win32.

    Un método es una función asociada con un determinado objeto, que manipula la información contenida en éste. Los métodos de ODBC.PM se acceden desde el objeto Win32::ODBC, por lo cual es necesario incluir al principio del escrito o módulo Perl la siguiente sentencia.

    use Win32::ODBC;

    Los principales métodos de ODBC.PM son:

    Crea una nueva instancia del objeto Win32::ODBC, el cual permite establecer conexión con una base de datos. Como parámetro requiere el nombre de la fuente de datos ODBC de la base de datos y opcionalmente el nombre de usuario y password asociado con la base de datos. Por ejemplo:

    $handler = win32::ODBC->new("DSN=Profes; UID=Scott; PWD=Tiger;");

    Retorna una referencia al objeto creado.

    Envía una sentencia SQL hacia la base de datos con la cual se ha establecido una conexión previamente. Como argumento recibe la sentencia SQL y retorna un valor distinto de cero si presenta algún error. Por ejemplo:

    $handler->sql("SELECT * FROM Computacion");

    Si se emite una consulta SELECT, este método retorna los nombre de los campos seleccionados hacia un arreglo . Por ejemplo:

    @nombre_campos = $handler->fieldnames;

    Cuando se envía una consulta SELECT se reciben un conjunto resultante de registros , cada llamada a fetchrow() recupera un registro hacia el buffer. Por ejemplo:

    while($handler->fetchrow){

    $count++;

    print "Registro número $count \n";

    }

    Este método obtiene desde el buffer cada uno de los registros resultantes de una sentencia SELECT, como parámetro se le debe enviar el nombre del campo que se desea recuperar. Por ejemplo:

    while($handler->fetchrow){

    foreach ( $handler->fieldnames){

    $campo = $handler->data($_);

    print "$_ : $campo \n";

    }

    }

    Con el bucle while se obtiene cada uno de los registros, y con el bucle foreach se accede a cada campo del registro.

    Se usa para obtener un mensaje indicador de error al emplear los métodos anteriores. Por ejemplo:

    if($handler->sql("SELECT * FROM Computacion ")){

    print $handler->error, "\n";

    exit();

    }


    [Contenido] [Anterior] [Arriba] [Siguiente]