ODBC para Servidor de Bases de Datos PostGreSQL ( III )

Autor: Juan Antonio Martinez Castaño
E-mail: jantonio@drake.dit.upm.es


Copyright

Este artículo es Copyright 1998 de Juan Antonio Martínez Castaño y se distribuye bajo las siguientes condiciones:


Indice:

  1. Introducción. Instalación de los drivers
  2. Configuración de ODBC en MS-Windows
  3. Ejemplo: Acesso a PostGreSQL desde MS-Access
  4. Conclusiones
  5. Referencias

Presentación

Como Final de la serie sobre ODBC para Linux, vamos a ofrecer un ejemplo de utilización del API ODBC desde Windows-95. Con este ejemplo se demuestra como desde MS-Access se puede acceder a nuestra base de datos PostGreSQL de manera transparente al usuario.


Introducción

En el primer número de la serie sobre ODBC se introdujeron los fundamentos del API de Programación, y se mostró como instalar en nuestro servidor Linux el SGDB PostGreSQL. En la segunda entrega, se ha procedido a explicar la instalación del API ODBC en Linux, mediante un ejemplo concreto: el interfaz de acceso a web PHP. Ahora llega la triste hora de dejar la consola del servidor, y ponerse delante de una máquina con MS-Windows...

Instalación del soporte ODBC para PostGreSQL en sistemas MS-Windows

Antes que nada, es preciso que el Protocolo TCP-IP se encuentre instalado en el sistema Windows, y que la conectividad entre Windows y Linux funcione sin problemas
En el CDROM que se acompaña a esta revista se encuentran bajo el directorio odbc/postodbc-0.21 los siguientes ficheros correspondientes a la versión 0.21 de PostODBC, adecuados para las versiones de PostGreSQL anteriores a la 6.2

( recordemos que hasta la version 6.1 el nombre oficial del servidor de bases de datos era PostGres95. Es interesante leer en el Web la evolución de este paquete de software, nombres incluidos... )

Para aquellos lectores que trabajen con la version de PostGreSQL que se distribuye con el CD-ROM, o que no necesiten instalar la versión de 16 bits recomendamos que se instalen los drivers correspondientes a la version 0.30 de PostODBC, denominada PsqlODBC. Bajo el directorio postodbc-0.30 encontramos los siguientes ficheros:

Para instarlos, escogemos el fichero apropiado para nuestro sistema, lo descomprimimos y ejecutamos el programa "setup" ( para la version 0.21. para la version 0.30, basta con ejecutar el fichero postdrv.exe ). MUY IMPORTANTE: solo deberemos instalar una de las versiones de drivers, pues son incompatibles entre si - El autor pasó media hora de "regedit" hasta conseguir arreglar el desaguisado... - Si nuestro sistema es Windows-3.xx no tenemos otra eleccion que instalar el fichero po021-16.tgz, pues la version 0.30 solo esta soportada en 32 bits


Configuración del driver ODBC

A continuacion se describe la instalación y configuración de PsqlODBC bajo Windows-95 OSR-2.

  1. En primer lugar, lanzamos la ejecución del fichero postdrv.exe. Aparece el familiar install wizard. Solo tendremos que decirle si queremos que busque o no versiones pre-instaladas del driver, y si queremos que haga chequeos de versión antes de proceder a la instalación.
  2. Seguidamente, desde el panel de control, seleccionamos la opción ODBC 32 bits y configuraremos las diversas DSN ( data source names ) de usuario, archivo y sistema, añadiendo el driver PsqlODBC que acabamos de instalar. Para ello picando en la opcion "Add" nos aparece el cuadro de la figura 1. Seleccionamos PostGreSQL
    Selección de los diversos DSN
    figura 1: Selección de los diversos DSN

  3. Una vez añadidos los DSN procedemos a configurarlos. Para ello en la opción "Propiedades" nos aparece la ventana de la figura 2. En ella deberemos insertar los datos correspondientes a nuestra database, nuestro servidor, el userid y el password de acceso ( que recordamos son propios del servidor de databases, y que no tienen por qué coincidir con cuentas de usuario )
    Setup del Driver PostODBC
    figura 2: Ventana de setup del driver ODBC

  4. Hilando fino podemos seleccionar las opciones avanzadas Driver y Data Source que nos permitirán: ( figuras 3 y 4 )
    Advanced Options (driver)
    figura 3: Opciones avanzadas (driver)

    Advanced Options (postgresql)
    figura 4: Opciones avanzadas (PostGreSQL)

  5. Una vez configurado el sistema, cerramos el panel de control. Aunque no es necesario, un reboot no estaría de más..
  6. En caso de problemas: Para que la configuración tenga éxito, el servidor de PostGreSQL debe estar correctamente configurado y funcionando. Un telnet desde windows al Linux al puerto 5432 ( donde se instala por defecto el servidor ) no debe dar lugar a "conection refused by server". Si los problemas subsisten, consultese la documentación
  7. Finalmente, ahora que ya tenemos el servidor y el cliente instalados, vamos a empezar a trabajar con el sistema


Ejemplo de uso: Acceso al servidor Linux desde MS-Access

En el número 3 de Linux Actual se creó en el servidor una base de datos "teléfonos" bajo PostGreSQL. Vamos a describir cómo se puede usar consultar y modificar desde Microsoft Access 97 dicha base de datos.

Para ello, deberemos haber obtenido e instalado desde el CD-Rom de Office 97 el Access, e incluír en la instalación los paquetes de acceso remoto. Una vez realizado, arrancamos Access y abrimos una base de datos vacia.
Recordemos que ODBC nos permite:

En un primer intento, importaremos una base de datos. Para ello seleccionamos el menu de tablas, y desde el menu principal ( o con el boton derecho ) seleccionamos la opción "Importar". Aparecerá un menú que nos solicita que escojamos el tipo de datos. Escogemos "ODBC Driver" y nos aparece la ventana "Seleccionar origen de datos". En el menú de "Origen de datos de sistema" escogemos PostGreSQL ( que previamente hemos configurado desde el panel de control, aunque si es necesario, Windows nos ofrece la posibilidad de seleccionar una nueva configuración desde este menú ) tal y como indica la figura 5.

Vincular database
figura 5: Vinculación de datos a un DSN

Windows entonces establece la conexión y nos presenta una lista de tablas que estan incluídas en la database seleccionada. Nosotros escogemos la que se editó en su día "teléfonos". Eh voilá! la tabla es cargada en Access y a partir de ahora se convierte en una database local.

No olvidemos que la operación que hemos realizado es "Importar". Esto es: coger una base de datos remota, traerla y convertirla en una database local. cualquier modificación que hagamos en ella no se verá reflejada en la database original del servidor. Es más, si intentamos exportar dicha tabla, el servidor indicará educacamente, que esa database ya existe, y que no podemos cargarla. La única solucion sería exportarla con un nombre nuevo... ( siempre y cuando hayamos configurado PostGreSQL para que el usuario pueda crear y/o modificar databases... )

Por ello, la mayor parte de las veces, lo que haremos sera "vincular" esto es: establecer un enlace entre los datos que vemos y modificamos y la base de datos. Técnicamente hablando, lo que se hace es almacenar en el servidor la secuencia de operaciones realizadas en el cliente, y cuando el usuario pulsa "Guardar" se genera una orden COMMIT que hace que todo el history se vuelque en la base de datos. En caso de que por alguna razón no se pueda realizar el COMMIT, el servidor genera el mensaje de error correspondiente, y efectua un rollback para deshacer todos los cambios realizados desde el último "guardar"

cuando el usuario pulsa "Guardar" se genera una orden COMMIT que hace que todo el history se vuelque en la base de datos

Así pues, efectuamos un vínculo a "teléfonos" y añadimos una nueva entrada. La pantalla queda tal y como se indica en la imagen de la figura 6. Al pulsar en "guardar", los datos son volcados al servidor. Para comprobarlo, desde un telnet al servidor, lanzamos el interprete de sql y realizamos un select sobre la base de datos. Como esperabamos, la entrada ha sido añiadida.
Ejemplo de Access
figura 6: Ejemplo de database remota con MS-Access

Esto es todo. Tal vez un poco complicado de configurar, pero una vez realizada la configuración, el trabajo se reduce simplemente a arrancar Access y seleccionar la base de datos... Ademas, varios usuarios pueden trabajar a la vez con la misma database, y desde programas distintos!! ODBC provee un API de programación, que en esencia es un interprete de ordenes SQL, y que permite a los programadores enganchar sus aplicaciones con el servidor de databases, de forma sencilla y transparente. Access no es sino otra aplicacion mas...

Consideraciones finales

Aunque el artículo se ha centrado sobre la instalación del API ODBC para Windows, ODBC no es exclusivo de este sistema. Como vimos en el número anterior de Linux ACTUAL, Existe todo un grupo de trabajo que está portando el API de ODBC a UNIX en forma de librería GPL, de manera que con independencia de la database escogida ( cada una con su propia librería de desarrollo ) exista un API universal que todas ellas entiendan y sepan manejar, y que además es el mismo en UNIX que en MS-Windows.

i
Existe un grupo de trabajo que está portando el API de ODBC a UNIX en forma de librería GPL

Por otro lado, hemos dejado para un capítulo posterior el interfaz JDBC, Java DataBase Conectivity. En esencia no es sino un API ODBC para java. De hecho, Sun Microsystems distribuye como paquete estandard en su Java Development Kit una implementación de JDBC que no es sino una pasarela JDBC-ODBC. De esta manera, mientras los programadores de servidores de databases no implementen su propia JDBC; puesto que ninguno, por motivos comerciales mas que obvios, deja de implementar ODBC, JDK siempre tiene una pasarela de acceso a todas las bases de datos

Deliberadamente se ha dejado de lado una descripción detallada de la librería del API ODBC, asi como la descripción de comandos SQL. Si los lectores lo estiman oportuno, en futuras ediciones de Linux Actual se incluirán cursillos sobre estos temas

Una última noticia: en el momento de escribir estas líneas, el grupo Insight ( la antigua Borland ) ha anunciado la compra de los derechos del copyright de PostODBC para Windows-XX, manteniendo su caracter GPL, y manifestado su intención de desarrollar nuevas herramientas de interacción con PostGreSQL en sus aplicaciones Middleware


Referencias