SQLdb Package/es

From Lazarus wiki
Jump to navigationJump to search

English (en) español (es) français (fr) 中文(中国大陆)‎ (zh_CN)

El paquete SQLdb contiene las Unidades (units) de FPC que permiten el acceso a un gran número de Bases de Datos SQL. En Lazarus encontraremos el paquete sqldblaz.lpk que una vez compilado e instalado nos permitirá el acceso a sus componentes en el LCL dentro de la pestaña "SQLdb".

sqldbcomponents.png

Documentación

Ver Documentación sobre SQLDB


Componentes

El paquete SQLdb proporciona los siguientes componentes:

TSQLQuery

Este es un descendiente de TDataset y proporciona los datos (procedentes de la consulta SQL realizada) en forma de Tabla. También puede ser empleado para ejecutar consultas al vuelo que no devuelven ninguna información.

TSQLTransaction

Encapsula las transacciones con el servidor de Bases de Datos. No consta en este momento información adicional sobre el mismo... Lo más importante es que implementa los métodos commit y rollback, que facilitan la finalización o cancelación de la transacción con la Base de Datos. [--- INFORMACIÓN INCOMPLETA: Por favor, sientase libre de añadir información adicional a la explicación de este componente, sobre todo si tiene experiencia en el uso del mismo. ---]

TXXXConnection

Donde XXX es el tipo de Base de Datos a la cual nos vamos a conectar. Cada uno de estos componentes emplea una petición "standar" de los componentes SQLQuery y SQLTransaction, y los traduce a peticiones especificas de cada Base de Datos, permitiendo la abstracción sobre las características especificas de las mismas.

Estos objetos de conexión descienden del genérico TSQLConnection; se puede utilizar TSQLConnection para crear programas que utilicen bases de datos de forma que puedan conectar a múltiples bases de datos. (ver SQLdb Tutorial3).

Los componentes TXXXConnection que podremos emplear son:

  • TIBConnection .............. Permite conexiones a BBDD Borland Interbase/Firebird
  • TMSSQLConnection ...... (Microsoft SQL Server, disponible desde la versión 2.6.1 de FPC & Lazarus 1.0.8)
  • TMySQL40Connection ... Conexiones a BBDD MySQL 4.0 requiere la librería cliente MySQL 4.0)
  • TMySQL41Connection ... Conexiones a BBDD MySQL 4.1 requiere la librería cliente MySQL 4.1)
  • TMySQL50Connection ... Conexiones a BBDD MySQL 5.0requiere la librería cliente MySQL 5.0)
  • TMySQL51Connection ... Conexiones a BBDD MySQL 5.1requiere la librería cliente MySQL 5.1, disponible desde la versión 2.5.1 de FPC)
  • TMySQL55Connection ... Conexiones a BBDD MySQL 5.5requiere la librería cliente MySQL 5.5 client library, available since FPC version 2.6.1/Lazarus 1.0.8)
  • TODBCConnection ......... Para conexiones a BBDD mediante los drivers see ODBC instalados en el PC
  • TOracleConnection ........ Para emplear con el motor (Oracle)
  • TPQConnection ............ Para emplear con BBDD (PostgreSQL)
  • TSybaseConnection ...... Para emplear con el motor (Sybase ASE, disponible desde la versión 2.6.1 de FPC & Lazarus 1.0.8)
  • TSQLite3Connection ..... Para emplear con el motor (SQLite - a partir de la versión 2.2.2 de FPC.

Usando el paquete SQLdb

Para utilizar el paquete SQLdb son necesarios los componentes TSQLQuery y TSQLTransaction, además del componente TXXXConnection especifico para la conexión.

Aquí tenéis un breve tutorial:

  • Ir a la solapa SQLdb en la paleta de componentes.
  • Añadir un componente T___Connection (conveniente para el tipo de base de datos que se esté utilizando) al formulario, y rellenar las propiedades oportunas para conectar a la base de datos. Estas variarán dependiendo de la base de datos actual. Hay que asegurarse de que la propiedad "connected" se puede establecer al valor true.
  • Añadir un componente TSQLTransaction. Volver al componente Connection y establecer su propiedad "Transaction" a la nueva transacción. Esto debería establecer la propiedad transaction de la base de datos - chequearlo para asegurarse. Deberías ser capaz de establecer su valor a "true".
  • Añadir un componente SQLQuery y establecer sus propiedades "Database" y "Transaction" a los componentes añadidos en el formulario relacionados con bases de datos.
  • Establecer la propiedad "SQL" de SQLQuery. Para un primer test realizar por ejemplo un "select * from <tablename>." que selecciona todo el contenido de la tabla para la base de datos con la que se estableció la conexión.
  • Establecer Active a True. Si funciona, se ha abierto una consulta (query) y el dato está disponible.

Desde este punto, añadir controles es igual que para cualquier otra base de datos, de todos modos recapitulemos:

  • Añadir un componente TDatasource (desde la solapa "Data Access") y establecer su propiedad "dataset" al componente "SQLQuery".
  • Añadir algunos controles desde la solapa "Data". Para una comprobación rápida se puede añadir un componente TDBGrid y establecer su "datasource" a la fuente de datos que se ha añadido. Con esto se deberían visualizar datos en el grid de acuerdo al resultado obtenido de la consulta que se haya realizado (por ejemplo: "select * from <tablename>.").

Por supuesto, esto es solamente el comienzo, pero obteniendo algunas datos en la grid suele ser usualmente el primer paso para asegurar que la conexión está funcionando. Se pueden encontrar explicaciones más detalladas en Working With TSQLQuery.

Notas

Se pueden encontrar más detalles en SQLdb Programming Reference

Las páginas relacionadas con el paquete SQLdb fueron inicialmente escritas a partir de observaciones realizadas utilizando TPQConnection, PostgreSQL 8.1 bajo WinXP. Es de esperar resultados similares para otras bases de datos, de modo que si alguien los puede confirmar vendría bien tener aquí unas anotaciones del resultado.

Parece funcionar de modo similar en MySQL 5.0.45 bajo Win XP. La propiedad 'active' de TSQLTransaction no puede ser establecida a true, pero los datos obtenidos de la base de datos se pueden visualizar en el componente TDbGrid (se encuentra en la solapa DataControls).

Se puede encontrar algo más de información (notas y documentación) en el siguientes enlace:

http://z505.com/cgi-bin/powtils/docs/1.6/idx.cgi?file=fcldbnotes

Para ver el listados de clases disponibles para esta interfaz ir a:

http://z505.com/cgi-bin/powtils/docs/1.6/idx.cgi?file=index-4&unit=sqldb

--Jagluiperd 00:54, 11 September 2010 (CEST)