HTMLpointHTMLpoint HTMLpoint.com


 Interactuar con un DBMS



Como ya se ha dicho, la interacción con una base de datos relacional se da normalmente empleando instrucciones SQL. El envío de las instrucciones a la DBMS se puede dar de dos maneras:

  • llamada interactiva
  • llamada a través de un programa de aplicación
En el primer caso, se usa un programa cuya finalidad consiste en recibir en input las instrucciones SQL, transmitirlas a la DBMS y mostrar los resultados al usuario. Normalmente, todas las DBMS ponen a disposición un programa de tipo textual con dichas funciones.
En el caso de PostgreSQL, la DBMS que usaré para implementar la base de datos que sirve de ejemplo, el programa se llama "psql". La sintaxis que hay que utilizar para convocarlo en la modalidad interactiva es la siguiente:

psql [ dbname [ user ] ]

"dbname" es el nombre de la base de datos a la que se quiere acceder, mientras que "user" es el nombre dek usuario con con el que se quiere acceder a la base de datos. Por ejemplo, la orden:

psql mydb benfante

activa el programa psql, accediendo a la base de datos mydb como usuario benfante. Si todo ha ido bien, en concreto si la base de datos existe y el usuario cuenta con los permisos necesarios para entrar, psql muestra un prompt parecido al siguiente:

mydb=>

Llegados a este punto, se pueden digitar las órdenes SQL (terminándolas con un ";" o con la meta-orden "\g" (go) para hacer que se ejecuten) y leer en la pantalla los resultados que producen.

Normalmente, los programas como psql se pueden utilizar también de modo no interactivo. Por ejemplo, invocando psql con la siguiente orden:

psql -f instrucciones.sql mydb benfante

el programa ejecuta las instrucciones SQL que están en el archivo instrucciones.sql y acaba inmediatamente después. De este modo es posible automatizar operaciones que se tienen que repetir frecuentemente o, en todo caso, que están compuestas por largas secuencias de órdenes SQL, sin tener que escribirlas manualmente cada vez.

En el caso en que se invoquen las instrucciones SQL a través de un programa aplicativo, éstas se ejecutan durante la ejecución de dicho programa, que usará los resultados para producir su output. En esta situación, el usuario no usa directamente las órdenes SQL y podría incluso no saber que el programa que está utilizando accede a una base de datos relacional: lo único que ve es el interfaz que la aplicación le ofrece. Sustancialmente, tenemos dos sistemas para escribir aplicaciones de este tipo:

  • usar una biblioteca que gestiones la comunicación con la DBMS, transmita las instrucciones SQL y nos permita manipular los resultados producidos. Bibliotecas de este tipo son, por ejemplo, JDBC y ODBC. A menudo, los productores de las DBMS ofrecen bibliotecas propietarias, que son específicas para su producto. Por ejemplo, en el caso de PostgreSQL la biblioteca para el lenguaje C se llama "libpq". Con frecuencia se intentan usar bibliotecas propietarias porque las aplicaciones resultan absolutamente específicas (funcionan sólo con la base de datos para la que la biblioteca se ha construido). Sin embargo, usando bibliotecas "standard", como JDBC o ODBC, las aplicaciones funcionarán con cualquier DBMS que exponga la interfaz solicitada por la biblioteca (a no ser que se empleen funciones específicas del DBMS).

  • usar Embedded SQL (ESQL). En este caso, el código SQL está englobado en el código de un lenguaje huésped y se usan los mecanismos normales del lenguaje para el paso de los parámetros y el uso de los resultados. Normalmente, el código resultante es convertido antes por un pre-procesador y después compilado por el compilador del lenguaje huésped. Una ventaja ulterior si se usa ESQL reside en el hecho de que existe un estándar ANSI que describe cómo tendría que funcionar. De este modo, es posible que un programa escrito para una determinada DBMS pueda recompilarse y funcionar también para otro. PostgreSQL pone a disposición un pre-procesador ESQL para el lenguaje C (ecpg).
En las siguientes lecciones usaremos psql para enviar las instrucciones SQL que implementarán, poblarán e interrogarán a la base de datos ejemplificada. En la última lección, se presentará, sin embargo, un applet Java que empleará la biblioteca JDBC para consultar la base de datos bibliográfica.


  Torna a inizio pagina