Guía de Implantación de la Interfaz Web.SQL

[Contenido]

[Anterior] [Siguiente]

 

 


 

Introducción 

Para efectos de realizar las pruebas con esta interfaz en el presente Trabajo de Graduación, se empleó un sólo equipo con el sistema operativo Windows NT 4.0 (Server) y el servidor Web Internet Information Server 2.0 de Microsoft. Se instaló y se configuró adecuadamente en dicho equipo un servidor SQL de Sybase versión 11.0.1.

Adicionalmente, se hicieron las pruebas respectivas con el mismo servidor Windows NT 4.0 y un servidor SQL de Sybase versión 10.x, instalado y configurado en otro equipo bajo la plataforma Novell versión 3.11, a través de una red informática.

A continuación se desarrolla una guía práctica para implantar la interfaz Sybase web.sql en la plataforma Windows NT. Remítase a la documentación que se provee con el software de distribución respectivo, para implantar dicha interfaz en las otras plataformas tales como: Sun Solaris, IRIX y HP-UX, la cual se puede adquirir en el siguiente sitio Web:

Instalación de Web.sql para Windows NT

Adquisición del Software

El software de web.sql para Windows NT está disponible en el Web. Para adquirirlo, abra la siguiente URL:

http://www.sybase.com/prouducts/internet/websql/ws_reqs.html

Después de haber bajado el software del WWW, realice los siguientes pasos:

  1. Verifique que el tamaño del archivo que ha obtenido sea del mismo tamaño del archivo que se muestra en la página Web de web.sql. Si los tamaños no son iguales, vuelva a bajar el archivo nuevamente. El tamaño aproximado de este archivo es de 6 MB.
  2. Cambie al directorio donde bajó el archivo: c:\ cd <dist-websql>
  3. En el File Manager (Administrador de archivos) o Explorador de Windows NT haga doble clic sobre el archivo <dist-websql>\websql.exe para extraer los archivos de instalación y de distribución.

Ejecución del Programa de Instalación (Setup)

Para ejecutar el programa de instalación (Setup) de Sybase web.sql con los archivos de distribución adquiridos del Web, realice los siguientes pasos:

  1. Cambie al directorio donde se copiaron los archivos de instalación y de distribución:
    c:\ cd <dist-websql>
  2. Ejecute setup.exe. En el File Manager (Administrador de archivos) o Explorador de Windows NT haga doble clic sobre el archivo <dist-websql>\setup.exe
  3. El programa de instalación de web.sql comenzará a ejecutarse. Prosiga de acuerdo a las instrucciones que se indiquen en el Asistente del programa de instalación.

Configuración del Archivo Sql.ini

El archivo sql.ini, ubicado en el directorio \sybase\ini del servidor SQL de Sybase, describe las conexiones de red entre dicho servidor y los clientes con los cuales se comunica. Casi todos los productos Sybase emplean este archivo para encontrar información concerniente a los servidores disponibles con sus respectivas direcciones en la red.

Después de haber completado el programa de instalación de web.sql, se requiere configurar la conexión al servidor SQL, proporcionando un archivo sql.ini válido en el directorio <dir_websql>\sybase\ini del servidor Web, donde se instaló el software de web.sql.

El archivo sql.ini puede adquirirse de cualquiera de las siguientes formas:

  1. Si tiene instalada la versión Open Client para NT en el mismo equipo donde está el servidor Web, copie los archivos sql.ini y libtcl.cfg del directorio %SYBASE%\ini al directorio <dir-websql>\sybase\ini.
  2. Si tiene instalado el servidor SQL en la red o en el mismo equipo donde está el servidor Web, copie los archivos sql.ini y libtcl.cfg del directorio %SYBASE%\ini al directorio <dir-websql>\sybase\ini.
  3. Puede crear un archivo sql.ini, como se explica en la siguiente sección.

Creación de un archivo sql.ini

  • Para crear un archivo sql.ini válido, prosiga de la siguiente manera:
    1. Abra la ventana System del Control Panel.
    2. Seleccione la variable de entorno PATH y modifíquela agregando el siguiente valor:

      c:\<dir-websql>\sybase\bin; c:\<dir-websql>\sybase\dll

      <dir-websql> es el directorio donde quedó instalado Sybase web.sql.

    3. Haga clic en el botón Set.
    4. Seleccione o cree la variable de entorno SYBASE y modifíquela agregando el siguiente valor: <dir-websql>\sybase
      <dir-websql> es el directorio donde quedó instalado Sybase web.sql.
    5. Haga clic en el botón Set y luego en el botón OK.
    6. Apague e inicie nuevamente el sistema operativo Windows NT.
    7. Desde el File Manager (Administrador de archivos) o el Explorador de Windows NT, ejecute el programa <dir-websql>\sybase\bin\sqledit.exe.
    8. Utilice el primer cuadro de diálogo que se visualiza cuando se ejecuta sqledit.exe. Proporcione la siguiente información para cada servidor que web.sql tendrá acceso:

    NLWNSCK

    :

    WinSock TCP/IP

    NLNWLINK

    :

    NT NWLINK SPX/IPX

    NLMSNMP

    :

    Named Pipes

    NLDECNET

    :

    DecNet

    1. Haga clic en el botón Ping para asegurarse de que cada entrada esté correcta.
    2. Cuando haya terminado, guarde los cambios realizados y sálgase del sqledit.exe.

    Prueba de la Instalación

    Después de haber instalado web.sql y especificado un archivo sql.ini válido, puede probar la instalación y definir las conexiones y asociaciones que requiera web.sql.

    Para probar la instalación de web.sql, prosiga de la siguiente manera:

    1. Primeramente debe iniciar el servidor SQL.
    2. Ejecute su Web browser.
    3. Abra la página de bienvenida de Sybase web.sql, proporcionando el siguiente URL en el browser:
  • http://<servidor-www>/<dir-cgi>/<prog-websql>/<dir-websql>/welcome.hts

    Donde:

  • < servidor-www >

    es el nombre o la dirección IP del servidor Web.

    <dir-cgi>

    es el nombre del directorio de escritos CGI del servidor Web.

    <prog-websql>

    es el nombre del programa CGI de web.sql (ws.exe ó websql)

    <dir-websql>

    es la ruta del subdirectorio de web.sql en el directorio raíz de los documentos HTML del servidor Web.

    welcome.hts

    es el nombre de la página de bienvenida de Sybase web.sql.

    1. Si no se logra ver la página de bienvenida de Sybase web.sql, asegúrese de haber seguido todos los pasos anteriores y especificado correctamente todos los valores requeridos.

    Configuración de Web.sql para Windows NT

    Después de haber instalado Sybase web.sql se necesita definir las conexiones y asociaciones de la base de datos que web.sql deberá utilizar. Cuando se realiza esto, es importante considerar la seguridad de web.sql.

    Seguridad con Web.sql

    Mientras configura la instalación de web.sql, debe seguir los requerimientos de su servidor para establecer seguridad a sus archivos y documentos. Esto lo puede realizar de dos formas:

    a. Utilizando la seguridad estándar del servidor HTTP.

    Siga las medidas de seguridad estándar para un servidor HTTP asignando los permisos en archivos y directorios para que los usuarios sin autorización no puedan hacer modificaciones o no tengan acceso a lo siguiente:

    b. Limitando acceso al programa CGI de web.sql.

    La única forma de poder implantar un control de acceso con la versión CGI de web.sql, es restringiendo el acceso al mismo programa CGI (ws.exe). De esta manera, se restringe el acceso a todos los archivos HTS contenidos en el servidor Web con un sólo usuario y contraseña.

    Para ello, debe mover el programa CGI de web.sql a un directorio propio. De otra forma, la restricción de acceso se aplicaría a todos los escritos CGI que se encuentran en el mismo directorio del programa web.sql.

    Si realiza lo anterior, debe configurar su servidor HTTP para que reconozca el nuevo directorio de web.sql como un directorio de escritos, con el atributo de ejecución y no de lectura.

    Una vez que ha asegurado el programa CGI de web.sql en su propio directorio, puede especificar el control de acceso para él.

    Conexiones y Asociaciones a la Base de Datos

    Para utilizar la interfaz Sybase web.sql se deben definir las conexiones y asociaciones a la base de datos, requeridas por dicha interfaz para responder a las requisiciones del usuario. Se pueden emplear uno de los siguientes métodos:

    1. Utilice la función ct_connect(usuario, contraseña, servidor) en cada archivo con extensión .hts que requiera una conexión a la base de datos. Este método duplica el código y expone la contraseña a cualquiera que tenga acceso directo a los archivos en el sitio de la red. Si utiliza este método, deberá escribir el siguiente código al inicio de cada archivo HTS.

      <syb>

      $ws_db = ct_connect("miLogin","miContraseña","miServidor");

      </syb>

    2. Utilice la página de Administración que provee web.sql para definir cuáles archivos o subdirectorios que se encuentran en el directorio raíz de documentos HTML se deben conectar a la base de datos. En este método preferido para web.sql, el archivo con extensión .hts utiliza automáticamente la función ws_connect(nombre-conexión).
  • La página de Administración está disponible para todas las plataformas y se opera desde el Web browser para realizar lo siguiente:
  • Cuando se define una conexión a la base de datos, debe proveerse el nombre de la conexión, el nombre del servidor de bases de datos, el login o nombre de usuario y su respectiva contraseña, de tal modo que únicamente ese usuario puede acceder al archivo HTS asociado al nombre de la conexión. Toda esta información es almacenada en el archivo del mapa de la base de datos (.websql.pl).

    Página de Administración de Web.sql

    Para utilizar la página de Administración de web.sql siga los siguientes pasos:

    1. Inicie su Web browser.. Se recomienda un browser que soporte botones etiquetados.
    2. Abra la página de bienvenida de Sybase web.sql con el siguiente URL en el browser: http://<servidor-www>/<dir-cgi>/ws.exe/<dir-websql>/welcome.hts
    3. Haga clic en el enlace Administration (Administración) en la página Web. La página de Administración se desplegará.
    4. Siga las instrucciones que se detallan al ingresar en cada sección de la página de Administración.

    Después de haber configurado satisfactoriamente web.sql, puede comenzar a utilizar la herramienta para desarrollar sus propios archivos HTS como se explicará en la siguiente sección.

    Aplicación y Uso de Web.sql

    SQL en Archivos HTS

    Como se explicó en la sección Formato de Archivos Hyper Text Sybase del Capítulo X de este documento, es posible incluir sentencias de transacción SQL en un archivo HTS entre un bloque de viñetas <SYB> y </SYB>. Al incluir el atributo TYPE=SQL en la primer viñeta se identifica que el bloque es de sentencias SQL.

    En el siguiente ejemplo, se asume que la conexión a la base de datos Tesis ha sido definida previamente y se muestra cómo incluir una simple sentencia select en un archivo HTS:

  • <SYB TYPE=SQL>

    select * from autores

    </SYB>

  • En el ejemplo anterior, cuando un browser cliente hace la requisición del archivo que contiene el código, el programa web.sql envía la consulta al servidor SQL. Éste evalúa la sentencia select y reemplaza el bloque <SYB> con los resultados de la instrucción select (en formato HTML) en el flujo HTML que pasa al servidor HTTP. El cliente browser nunca ve la sentencia SQL que produce los resultados obtenidos.

    Puede incluir múltiples sentencias SQL en un sólo bloque <SYB>. También puede incluir múltiples bloques <SYB> en un sólo archivo HTS. Inclusive, puede entremezclar bloques <SYB> de Perl con bloques <SYB> de SQL. Sin embargo, no puede incluir sentencias SQL y código Perl dentro de un mismo bloque <SYB> (excepto cuando se emplean variables Perl en bloques SQL, como se discutirá más adelante en este capítulo).

    Consulta a una base de datos utilizando SQL.

    Desde un archivo HTS puede utilizar sentencias de transacción SQL para realizar consultas a bases de datos. Web.sql convierte los resultados a una tabla con formato HTML 3.0.

    En el siguiente ejemplo se hace una consulta a la tabla autores de la base de datos Tesis, a través de la sentencia select. Los resultados se obtienen en una tabla HTML

  • <SYB TYPE=SQL>

    select apellido, edad

    from Tesis..autores

    where edad > 25

    </SYB>

  • Los resultados se obtienen en una tabla con formato HTML, como se muestra a continuación:

  • apellido edad

    Castro 26

    García 28

    Méndez 30

     

  • Otras acciones con una base de datos utilizando SQL

    Además de consultar a una base de datos a través de la instrucción select, se pueden ejecutar otras instrucciones SQL en un archivo HTS. Siempre y cuando el usuario de dicho archivo tenga los permisos apropiados, podrá insertar, eliminar y/o modificar registros y crear tablas en la base de datos, así como también, ejecutar procedimientos predefinidos.

    Nota:

    Si el comando SQL que se especifica en un bloque <SYB> no produce resultados de registros, entonces el bloque <SYB> tampoco producirá resultados en el flujo HTML que web.sql pasa al servidor HTTP. Particularmente, web.sql no imprime el estado de los comandos insert, update o delete, que se utilizan para insertar, actualizar y eliminar registros, respectivamente.

    En el siguiente ejemplo, el bloque <SYB>inserta un registro a la tabla autores de la base de datos Tesis.

  • <SYB TYPE=SQL>

    insert into Tesis..autores

    values ("María", "Guzmán", "24", "San Salvador")

    </SYB>

  • Por otra parte, cuando se emplea el comando use para seleccionar una base de datos en particular, deberá colocar dicho comando en un bloque <SYB TYPE=SQL> por separado, precediendo a las demás sentencias SQL para las cuales hará efecto. La base de datos que especifique en la sentencia use estará activa hasta el final del archivo o hasta la siguiente sentencia use que se especifique. Por ejemplo:

  • <H1>Autores de Tesis:</H1>

    <SYB TYPE=SQL>

    use Tesis

    </SYB>

    <SYB TYPE=SQL>

    select * from autores

    </SYB>

     

  • Uso de variables Perl y campos de datos de formularios HTML en los archivos HTS.

    Web.sql define y fija automáticamente algunas variables relacionadas con los valores de campos de datos contenidos en formularios HTML, los cuales son remitidos al archivo HTS.

    Es decir, web.sql pasa automáticamente los datos de un formulario HTML al archivo HTS y asigna los valores a variables Perl (web.sql soporta ambos métodos GET y POST). Por lo cual, se pueden emplear estas variables en las sentencias SQL, logrando así la creación de formularios para la interacción con bases de datos.

    Como ejemplo, considérese un formulario simple en HTML que posibilite al usuario buscar autores por apellido de la base de datos Tesis. El siguiente formulario HTML provee de un campo de texto para que el usuario pueda ingresar un apellido.

  • <HTML>

    <BODY>

    <H2>Búsqueda de Autores por apellido</H2>

    <P>

    <FORM ACTION="/cgi-bin/ws.exe/busqueda.hts" METHOD=POST>

    Ingrese el apellido a buscar: <INPUT NAME=apellido SIZE=30>

    <P>

    <INPUT TYPE=SUBMIT VALUE=Buscar>

    </FORM>

    </BODY>

    </HTML>

  • El atributo ACTION de la viñeta <FORM> produce que el browser envíe los resultados del formulario al servidor para el URL de busqueda.hts, cuando el usuario haga clic en el botón Buscar. El siguiente archivo HTS busqueda.hts, obtiene el valor del campo apellido del formulario y lo utiliza en la sentencia select para poder ejecutar la consulta a la base de datos.

  • <HTML>

    <BODY>

    <H1>Autores</H1>

    Autores con el apellido $apellido:<P>

    <SYB TYPE=SQL>

    select Apellido, Nombre, Edad, LugarNac

    from Tesis..autores

    where Apellido = upper("$apellido")

    order by Apellido

    </SYB>

    </BODY>

    </HTML>

  • Perl en Archivos HTS

    Como se reportó anteriormente en el Capítulo X de este documento, es factible incluir el código de un escrito Perl en un archivo HTS entre las viñetas <SYB> y </SYB>. Se puede especificar que un bloque <SYB> contiene código Perl al incluir en la primer viñeta el atributo TYPE=PERL. Sin embargo, cuando se omite dicho atributo, el programa web.sql asume que el bloque contiene código Perl.

    El siguiente ejemplo muestra cómo incluir un código simple de Perl en un archivo HTS.

  • <SYB TYPE=PERL>

    require "ctime.pl";

    print "Fecha: ", "<B>", &ctime(time), "</B>\n";

    </SYB>

  • Cuando un browser cliente hace la requisición del archivo que contiene este código, el programa web.sql evalúa dicho código y reemplaza el bloque <SYB> con los resultados impresos en el flujo HTML que pasa al servidor HTTP. El cliente browser nunca ve el código Perl que produce los resultados obtenidos.

    Nota:

    En un escrito Perl debe imprimir cualquier cosa que desee incluir en el flujo final de HTML que web.sql envía al cliente browser. También puede incluir viñetas HTML en las salidas del código Perl, lo cual permite dar un formato a los resultados.

    Puede incluir múltiples bloques <SYB> en un sólo archivo HTS. También puede entremezclar bloques <SYB> de SQL con bloques <SYB> de Perl. Sin embargo, no puede incluir sentencias SQL y código Perl dentro de un mismo bloque <SYB>.

    Uso de variables Perl en los archivos HTS.

    Web.sql posibilita definir variables dentro de bloques <SYB> de Perl y luego utilizar sus valores en cualquier parte del archivo. El siguiente ejemplo utiliza el valor de una variable Perl en la porción HTML de un archivo HTS. Nótese que la variable se define dentro de un bloque <SYB> de Perl, pero directamente se hace referencia a ella en el código HTML.

  • <HTML>

    <BODY>

    <SYB TYPE=PERL>

    # Se asigna la fecha y hora del sistema en una variable.

    require "ctime.pl";

    $tiempo = &ctime(time);

    </SYB>

    <STRONG>Hoy es: ${tiempo}</STRONG>

    <P>

    </BODY>

    </HTML>

  • Interfaces de Programación de Aplicaciones (API)

    Web.sql provee de dos Interfaces de Programación de Aplicaciones (API) en Perl para la interacción con bases de datos, las cuales son: "Convenience" API ("conveniente") y Client-Library API (bibliotecas para cliente). Si no ha trabajado antes con Sybase Open Client, probablemente quiera utilizar mejor la interfaz "Convenience" API, puesto que requiere de menos programación.

    Se puede utilizar la interfaz "Convenience" API para generar automáticamente las tablas HTML que contienen los resultados de la consulta al servidor SQL. Todas sus funciones contienen el prefijo "ws_". En cambio, la interfaz Client-Library API se puede utilizar para manejar los datos devueltos por el servidor SQL, registro por registro. Todas sus funciones contienen el prefijo "ct_".

    Uso de la Interfaz Convenience API

    La interfaz Convenience API de web.sql provee de un conjunto de rutinas sencillas para ejecutar la tareas más comunes en un archivo HTS. Puede emplear estas rutinas individualmente para realizar la mayor parte de la interacción con bases de datos, o puede combinarlas con las rutinas de la interfaz Client-Library API de web.sql.

    A continuación, se listan las rutinas de la interfaz Convenience API de web.sql que se pueden utilizar en un bloque <SYB> de Perl.

     

    ws_connect :

    Conecta a un servidor SQL y devuelve un identificador de la conexión.

    ws_content_type :

    Fija el tipo de contenido para los datos devueltos por un archivo con extensión .pl.

    ws_error :

    Imprime un mensaje de error y una cadena opcional. Termina el procesamiento de la página actual.

    ws_fetch_rows :

    Obtiene e imprime los registros devueltos por la función ct_sql.

    ws_print :

    Imprime una cadena, extendiendo las referencias a variables Perl.

    ws_sql :

    Ejecuta uno o más comandos SQL e imprime los resultados..

    ws_rpc :

    Ejecuta un procedimiento almacenado y registrado, actualiza los argumentos e imprime los resultados.

    Para una información más detallada del uso de cada una de estas funciones, remítase a la Guía del Programador incluida en la documentación de la aplicación Sybase web.sql.

    Uso de la Interfaz Client-Library API

    La interfaz Client-Library de web.sql posibilita el manejo de los datos de los registros devueltos por el servidor. Provee de una interfaz similar a la de Sybase Open Client Client-Library (CT Lib) API.

    Esta interfaz es más compleja que la Convenience API, pero da un mayor control sobre la interacción con el servidor SQL. Difiere de la interfaz Open Client API en muchos aspectos, haciendo de la programación de web.sql más fácil.

    Nota:

    No se requiere ser un programador experimentado de Open Client Client-Library para poder utilizar la interfaz Client-Library API de web.sql. La Guía del Programador de web.sql contiene toda la información necesaria para poder utilizar dicha interfaz. Sin embargo, si es un programador experimentado de Open Client Client-Library, debería revisar las páginas de referencia en el Apéndice A de la mencionada guía. Preste atención a las diferencias entre los APIs.

    Es posible utilizar las rutinas de la interfaz Client-Library de web.sql en combinación con la interfaz Convenience API. Por ejemplo, puede emplear la función ct_connect para conectarse a la base de datos, ws_error para manejar condiciones de errores y una combinación de rutinas Client-Library y la función ct_fetch para obtener los datos del registro resultante.

    A continuación se listan las rutinas de la interfaz Client-Library API de web.sql que se pueden incluir en un bloque <SYB> de Perl.

    ct_callback :

    Instala e invoca una rutina para el manejo de errores.

    ct_cancel :

    Cancela un comando o los resultados de un comando.

    ct_col_types :

    Recupera un arreglo de tipos de columnas para los resultados de la consulta actual.

    ct_col_names :

    Recupera un arreglo de nombres de columnas para los resultados de la consulta actual.

    ct_connect :

    Establece una conexión de base de datos a un servidor.

    ct_fetch :

    Obtiene un sólo registro de los datos resultantes.

    ct_fetch_parameters:

    Actualiza las variables de parámetro de salida provistas a ct_rpc.

    ct_options :

    Fija, recupera o limpia los valores de las opciones del procesamiento de consultas del servidor.

    ct_res_info :

    Recupera información acerca del conjunto de resultados o comando actuales.

    ct_results :

    Determina el estado del comando SQL y el tipo de resultados devueltos.

    ct_rpc :

    Llama a un procedimiento almacenado que reside en un servidor remoto.

    ct_sql :

    Envía uno o más comandos SQL al servidor de bases de datos.

    Para una información más detallada del uso de cada una de estas funciones, remítase a la Guía del Programador incluida en la documentación de la aplicación Sybase web.sql.


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