postgres/es

From Free Pascal wiki
Jump to navigationJump to search

Template:Postgres

Descripción

Se puede utilizar FreePascal/Lazarus para acceder a un servidor de bases de datos (BB.DD). Si estás buscando más información sobre el paquete postgres en FPC,por favor visita el siguiente sitio postgres#PostgreSQL_package:_the_low_level_units.

Ventajas de PostgreSQL:

  • Se uso está muy difundido y se puede obtener fácilmente.
  • Muy estable y contiene un conjunto de características muy completo.
  • Licencia liberal (sin coste) en comparación con otras bases de datos.

Desventajas de PostgreSQL:

  • Algunos hosters puede que no ofrezcan PostgreSQL.
  • No existen versiones embebidas.

Win64: por favor mira aquísi existen actualmente advertencias sobre no usar ciertas versiones FPC/Lazarus Win64.

ZEOS

Zeos soporta PostgreSQL y lo podemos utilizar con FreePascal y con Lazarus. Con Lazarus lo podemos añadir como paquete de forma que lo tengamos disponible en una nueva solapa del IDE.

Se encuentra disponible para su descarga desde http://sourceforge.net/projects/zeoslib/ , teniendo adicionalmente su foro en http://zeoslib.sourceforge.net/

Más información en ZeosDBO

Descripción

Se puede utilizar FreePascal/Lazarus para acceder a un servidor de bases de datos (BB.DD). Si estás buscando más información sobre el paquete postgres en FPC,por favor visita el siguiente sitio postgres#PostgreSQL_package:_the_low_level_units.

Ventajas de PostgreSQL:

  • Se uso está muy difundido y se puede obtener fácilmente.
  • Muy estable y contiene un conjunto de características muy completo.
  • Licencia liberal (sin coste) en comparación con otras bases de datos.

Desventajas de PostgreSQL:

  • Algunos hosters puede que no ofrezcan PostgreSQL.
  • No existen versiones embebidas.

Win64: por favor mira aquísi existen actualmente advertencias sobre no usar ciertas versiones FPC/Lazarus Win64.

ZEOS

Zeos soporta PostgreSQL y lo podemos utilizar con FreePascal y con Lazarus. Con Lazarus lo podemos añadir como paquete de forma que lo tengamos disponible en una nueva solapa del IDE.

Se encuentra disponible para su descarga desde http://sourceforge.net/projects/zeoslib/ , teniendo adicionalmente su foro en http://zeoslib.sourceforge.net/

Más información en ZeosDBO

SQLDB

FPC/Lazarus soporta PostgreSQL de base con un componente/clase de conexión PostgreSQL. Si solamnete estás utilizando FPC o necestias añadir soporte para PostgreSQL, añade pqconnection a tu claúsula uses. En cualquer caso, Lazarus aporta un componente:

sqldbcomponents.png

Nota: El cliente libpq C contiene alguna pérdida de memoria (al menos hasta la versión version 9.3 de Postgres, que a fecha de realizar esta traducción va por la 9.4.1) cuando la librería es cargada/descargada reiteradamente.

SQLDB carga la librería cuando se realiza la primera conexión, y la descarga cuando se cierra la última conexión. Esto significa que cada vez que la conexión se cierra, se produce una pequeña pérdida de memoria. Para prevenir que esto suceda (y acelerar el funcionamiento de la aplicación)puedes cargar la librería una vez al comienzo del proceso con la llamada InitialisePostgres3.

Se utiliza la propiedad charset para la codificación del cliente.


El componente TPQConnection no soporta directamente la propiedad Port, pero se puede pasar su valor al componente a través del parámetro Params: but one can pass the port into the component via the Params parameter:

PQConnection.Params.Add('port=' + VariableContainingPort);

Mediante la propiedad params se pueden especificar adicionalmente otros parámetros de la conexión:

PQConnection.Params.Add('application_name=''yourappname''')

Ejemplo

Ver SQLdb_Tutorial1 para acceder a un tutorial sobre como crear un programa GUI database-enabled escrito para PostgreSQL/SQLDB, as well as SQLite/SQLDB, Firebird/SQLDB, basically any RDBMS SQLDB supports).

Event monitoring

If you have FPC2.6.2+ and a recent version of Lazarus, you can use the TPQTEventMonitor component to monitor events coming from PostgreSQL.

It is a thin wrapper around FPC PQEventMonitor; please see the FPC pqeventstest.pp example programs for details.

Installation and errors

As with all sqldb units, you need to add your driver libraries (all required PostgreSQL .dll/.manifest files)

  • to a directory in the (library search) path (e.g. c:\windows\system32 for Windows)
  • or (Windows) to the program output directory (e.g. lib/something/ in your project directory, and the project directory

Windows 64 bit driver

If you are developing 64 bit applications, you must use a 64 bit DLL.

Light bulb  Nota: FPC 2.6.0 (therefore Lazarus 1.0.4 or lower) does not yet support PostgreSQL on Windows 64 bit (unless you patch and recompile it).

A Windows 64 driver is fairly hard to find but can be downloaded here: [1]. The driver library can be installed in c:\windows\system32; 32 bit driver libraries can be installed in the confusingly named c:\windows\syswow64

Error: "Can not load PostgreSQL client library "libpq.dll""

The program cannot find your PostgreSQL driver files.

See above on instructions where to install the libraries.

A good example that demonstrates how to include drive DLL files when connecting Lazarus with PostgreSQL under Windows is easyDB.

On Linux/Unix/OSX: make sure the PostgreSQL libraries are in your library search path, e.g.:

  • On Linux add the path to the libpq.so file to the libraries section in your /etc/fpc.cfg file. For example : -Fl/usr/local/pgsql/lib
  • It may be necessary to create a symbolic link from a specific library version to a general library name:
    ln -s /usr/lib/pqsql.so.5 /usr/lib/pqsql.so
    
    . Alternatively, install the postgresql client -dev package using your distribution's package manager

Problems clearing parameters

Light bulb  Nota: Verify this: is .paramtype really necessary?

At least in FPC <= 2.6.2: if you .Clear a parameter (i.e. set it to NULL), PostgreSQL may have difficulty recognizing the parameter type.

In that case, explicitly specify the type, e.g.:

FWriteQuery.Params.ParamByName('LONGITUDE').ParamType:=ptInput; //required for postgresql
FWriteQuery.Params.ParamByName('LONGITUDE').Clear

Requerimientos

Se necesita al menos la versión 0.99.5 de FreePascal. Las cabeceras (headers) han sido portadas de la versión 6.3.1 de PostGreSQL. El uso de una versión anterior probablemente no funcione.

Instalación:

La unit postgres viene con los paquetes de FreePascal, y se distribuye junto con el compilador. Este contiene un directorio postgres con las units, un programa de test y un fichero make (makefile). En dicho directorio se puede editar el fichero make para establecer las variables que contiene para que estén acordes al sistema. Solo debes aportan una cosa:

  • El directorio donde reside la librería libpq que habitualmente se encuentra en /usr/local/pgsql/lib

Lo que se debe teclear

En primer lugar el mandato make que compilará las units y el programa:

make


Si la compilación se realiza con éxito, entonces podemos instalar el programa con el mandato:

make install

(Recordar establecer el valor correcto del directorio donde las units deben ser instaladas)

A continuación es interesante realizar un test del programa con el mandato:

make test

Esto realizará lo siguiente:

  • Ejecutar el programa de test testpg, el cual se ha portado del programa de ejemplo de la guía de programadores de PostGreSQL.
  • Ejecutar un script para crear una tabla dentro de la base de datos y rellenarla con datos. (el programa psql debería encontrarse en el PATH para que todo funcione bien). La base de datos que se utiliza por defecto es testdb.
  • Ejecutar el programa de testeo testemail.
  • Ejecutar un script en el shell para eliminar la tabla creada una vez que tenemos verificado el funcionamiento.


Con todo esto obtenemos un montón de mensajes en pantalla que nos aportarán mucha información y resultados. En caso de que algo vaya mal, el mandato make nos informará convenientemente.

Planes futuros:

El interface de PostGreSQL es una pura traducción de los ficheros de cabecera en C que tiene PostGreSQL. Esto significa que las funciones utilizadas están poco pascalizadas. Sería interesante tener un interface OOP al estilo de Delphi por lo que ya se está trabajando en ello.


Volver a Packages List