Lazarus DB Faq/es

From Lazarus wiki
Jump to: navigation, search

Deutsch (de) English (en) español (es) français (fr) italiano (it) 日本語 (ja) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

FAQ SOBRE BASES DE DATOS EN LAZARUS

(FAQ = Frequently Asked Questions / Preguntas realizadas frecuentemente).

Descripción general

   Este FAQ se dirige a la programación Lazarus con bases de datos.

Como complemento a la referencia principal sobre bases de datos en Lazarus.

Dónde encontrar más FAQ?

   Buscar en el sitio oficial www.lazarus.freepascal.org. Este no es más que otro FAQ. Aquí puedes encontrar una página que empezó siendo una copia de la FAQ, más completa aunque esté en inglés o bien algún punto concreto de interés en español Aquí.

¿Dónde encontrar componentes para Bases de Datos?

   Ahora los componentes SQLdb forman parte del paquete FPC y Lazarus, y por tanto están instalados por defecto en todas las versiones más o menos recientes. Si miras en [$LazarusDir]/components verás el directorio SQLdb. Instala el paquete manualmente si lo necesitas (sqldblaz.lpk) y podrás conectar a servidores MySQL, Interbase / Firebird, Postgres, MS SQL y Sybase ASE (si tienes FPC 2.6.1+), Oracle servers. Aquí tienes una descripción para cómo instalar paquetes en caso necesario.

¿Existen otros componentes?

   Sí. Los componentes de ZEOS (ZeosLib han sido convertidos para ser compilados/instalados/utilizados en Lazarus.    A fecha de enero de 2013 ya se cuenta con la versión de Lazarus 1.0.4 y ZeosLib 7.0.3.

   Hay que descargar el ZEOSDBO_Rework de ZEOS cvs.

   Mira también el tutorial de Zeos.

   Pascal Data Objects trabaja también con Delphi y FPC 2.0 (para MySQL y Firebird)

InterBase / Firebird

Cómo conectar desde Linux a un Servidor en Windows

   Introducir la ruta correcta a una Base de datos en un servidor Windows desde un cliente Linux no es algo evidente.

   Supongamos que se ha instalado Firebird en F:\Archivos de programa\firebird\. La Base de datos de ejemplo employee.fdb estará en el directorio F:\Archivos de programa\firebird\examples\. La dirección IP de la máquina es 192.168.2.100.

   Escribiendo esta cadena de conexión

 192.168.2.100:F:\Archivos de programa\firebird\examples\employee.fdb

   en la IBConnection se conectará a la BD solicitada.

   Nota: ¡No hay que poner valor a la propiedad hostname!

MySQL

¿Qué versiones de mySQL están soportadas?

   Actualmente los componentes SQLdb pueden trabajar con las versiones MySQL 4.0, 4.1, 5.0, 5.1 y 5.5. Comprueba que usas el componente adecuado de conexión para la versión de la librería cliente que tienes instalada. Si esta es de la versión MySQL 4.1 hay que utilizar el componente TMySQL41Connection incluso si el servidor es de la 4.0 o 5.0.

Objetos de Datos Pascal (Data Objects)

   Ahora existe una alternativa. Las funciones introducidas en MySQL 4.1 y 5.0, como prepared statements (sentencias preparadas), procedimientos almacenados y ligados, son soportadas por la API de base de datos llamada Pascal Data Objects, que está inspirada en PHP Data Objects. Todo el código y la documentación necesarias para utilizar esta nueva API se encuentran en:

 http://pdo.sourceforge.net

2007/01/30: PDO ha añadido controladores para Firebird 1.5 Y 2.0.

PostgreSQL

   Se pueden utilizar Bases de datos PostgreSQL con el componente TPQConnection, que utliliza la librería de conexión de PostgreSQL's libpq [1]; con el puedes conectar fácilmente con casi todas las BD PostgreSQL, pero el componente no puede utilizar las siguientes opciones de conexión:

  • Port: por ejemplo suele utilizar 5432 pero parece que es mejor dejar en blanco esta propiedad.
  • ClientEncoding Postgres en FPC Nota sobre esto;
  • Creo que si el hostname se deja en blanco asume por defecto localhost o 127.0.0.1.

Sería bueno que los desarrolladores de estos componentes para Lazarus actualizasen esta sección puesto que conocen en más detalle el código y sobre todo lo que soporta actualmente o bien si tienen intenciones de hacer cambios a medio/largo plazo. Por lo que parece la mayor parte consiste en llamadas a funciones de la librería pero desconozco los cambios de una a otra versión.

Además en la tabla Bases de datos se especifica que la última versión soportada es la 8, mientras que PostgreSQL dispone ya de la versión 9.x (al menos a fecha enero 2013). Es también muy importante utilizar las librerias cliente adecuadas, caso contrario puede dar problemas de conexión o de funcionamiento.

Las pruebas que he realizado han sido con las librerias cliente (libpq.dll 8.3.1.8075)y parece que funciona. adicionalmente puede requerir otras librerias del conjunto que tiene el programa cliente cuando se instala y no solo deben ser correctas y estar en el equipo donde se realiza el desarrollo del programa sino también cuando dicho programa se distribuye a otros equipos.

Caso de utilizar conexión segura necesitará por ejemplo la librería que habilita SSL (ssleay32.dll - The OpenSSL Project, http://www.openssl.org/) o [libeay32.dll OpenSSL Shared Library The OpenSSL Project, http://www.openssl.org/)

   Es posible que existan otros parámetros de conexión no soportados.

Adicionalmente puedes ver:

En la wiki de freepascal: Postgres en FPC;

Un interesante programa como ejemplo: Easy_DB