 |
|
 |

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.
|
|
 |
|
 |