Os explicamos paso a paso cómo acceder a SQLite mediante el lenguaje de programación Borland (ahora Codegear) Delphi 6.0 utilizando el componente gratuito ZeosDBO (acceso nativo, no necesita de instalación de ningún tipo).

Definición de SQLite

SQLite es un sistema de gestión de bases de datos relacional compatible con ACID (Atomicity, Consistency, Isolation and Durability ó Atomicidad, Consistencia, Aislamiento y Durabilidad). SQLite sólo necesita una librería (biblioteca) que ocupa poco más de 700KB (tclsqlite3.dll). Desarrollada en C, SQLite es un proyecto de dominio público creado por D. Richard Hipp.

A diferencia de los sistemas de gestión de base de datos cliente-servidor (Oracle, MySQL, Microsoft SQL Server, DB2, etc.), el motor de SQLite no es un proceso independiente con el que el programa principal se comunica, sino que es una biblioteca (finchero DLL) que se enlaza con el software mediante llamadas a funciones y subrutinas. Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son más eficientes que la comunicación entre procesos.

La base de dato SQLite (definiciones, tablas, índices y datos) se guarda como un sólo fichero estándar en la máquina host. Este diseño simple se logra bloqueando todo el fichero de base de datos al principio de cada transacción.

Actualmente, SQLite va por la versión 3.6.11, que permite bases de datos de hasta 2 Terabytes de tamaño, y también permite la inclusión de campos tipo BLOB.

Este motor de base de datos es muy útil para realizar aplicaciones de propósito general que necesiten guardar datos en base de datos y que no sean «intrusivos», es decir, programas que con un ejecutable, una DLL y un fichero de base de datos funcionarían perfectamente, sin necesidad de instalación de motores de base de datos, ni de níngún otro componente.

Acceso a SQLite mediante Borland Delphi 6, ZeosDBO y Windows XP

Instalación del componente ZeosDBO en Borland Delphi 6

En primer lugar instalaremos los componentes gratuitos de acceso a base de datos ZeosDBO, en su versión 6.6.4 permite acceso nativo a SQLite 3.0 (también a Oracle, MySQL, Postgresql, SyBase, Firebird, etc.).

Accederemos a la URL:

http://sourceforge.net/project/showfiles.php?group_id=35994&package_id=28219

Descargaremos el fichero de Zeos Database Objects, pulsando en el enlace «ZEOSDBO-6.6.4-stable.zip»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Instalación ZeosDBO

Una vez descargado el fichero ZEOSDBO-6.6.4-stable.zip de 1,56MB lo descomprimiremos. Copiaremos la carpeta «…/src» de este fichero a la carpeta de instalación de Borland Delphi, por defecto:

C:/Archivos de programa/Borland/src

Copiaremos el contenido de la carpeta «…/packages/delphi6» a la carpeta:

C:/Archivos de programa/Borland/Delphi6/Lib

Abriremos Borland Delphi 6, desde el menú «File» pulsaremos en «Open», accederemos a la carpeta:

C:/Archivos de programa/Borland/Delphi6/Lib

y seleccionaremos el fichero ZeosDBO.bpg:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Instalación ZeosDBO

Pulsaremos en el menú «View» – «Project Manager»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Instalación ZeosDBO

En la ventana «Project Manager» pulsaremos con el botón derecho sobre «ZCore60.bpl», en el menú emergente pulsaremos «Compile»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Instalación ZeosDBO

De la misma forma compilaremos también (en el orden indicado) ZParseSql60.bpl, ZPlain60.bpl y ZDbc60.bpl.

Tras compilar los ficheros pulsaremos con el botón derecho sobre ZComponent60.bpl y seleccionaremos «Install»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Instalación ZeosDBO

Si todo es correcto, nos mostrará este mensaje indicando que los componentes ZeosDBO han sido correctamente instalados:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Instalación ZeosDBO

Con el texto:

—————————
Information
—————————
Package c:/archivos de programa/borland/delphi6/Projects/Bpl/ZComponent60.bpl has been installed.
The following new component(s) have been registered: ZConnection.TZConnection, ZDataset.TZQuery, ZDataset.TZReadOnlyQuery, ZDataset.TZTable, ZIBEventAlerter.TZIBEventAlerter, ZSequence.TZSequence, ZSqlMetadata.TZSQLMetadata, ZSqlMonitor.TZSQLMonitor, ZSqlProcessor.TZSQLProcessor, ZSqlUpdate.TZUpdateSQL, ZStoredProcedure.TZStoredProc.
—————————
OK
—————————

Cerraremos Borland Delphi sin guardar los cambios y ya podremos utilizar los componentes gratuitos ZeosDBO, aparecerá una nueva pestaña en la paleta de componentes llamada Zeos Access:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Instalación ZeosDBO

Acceso a SQLite con Delphi y ZeosDBO

Abriremos Borland Delphi 6, en el menú «File» – «New» – «Application», en la pestaña «Zeos Access» pulsaremos en el componente «ZConnection«. En la propiedad «Protocol» del componente «ZConnection» seleccionaremos «sqlite-3»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

En la propiedad «Database» del componente ZConnection seleccionaremos el fichero de base de datos SQLite que previamente habremos creado tal y como indicamos en el siguiente artículo:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Si intentamos realizar una conexión cambiando el valor de la propiedad «Connected» del componente ZConnection a «True» nos dará este error:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Con el texto:

—————————
Error
—————————
None of the dynamic libraries can be found: sqlite3.dll.
—————————
OK
—————————

Debido a que no tenemos la librería «sqlite3.dll». Para solucionarlo y poder acceder de forma nativa a SQLite mediante Borland Delphi y ZeosDBO deberemos descargar esta librería (DLL) de la web de SQLite (es gratuita), desde la URL:

http://www.sqlite.org/download.html

Seleccionaremos en «Precompiled Binaries For Windows» el enlace «sqlitedll-3_6_12.zip»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Una vez descargado este fichero lo descomprimiremos, el fichero sqlite3.dll que contiene podremos copiarlo a la carpeta del sistema (de esta forma valdrá para cualquier aplicación que ejecutemos en el equipo y que necesite acceso a SQLite):

C:/Windows/System32

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

O bien puede estar en la misma carpeta que el ejecutable de la aplicación (sólo servirá para ese ejecutable).

Tras copiar este fichero ya podremos conectarnos a la base de datos, en nuestro caso a:

C:/bdsqlite/ajpdsoft

Para ejecutar consultas SQL sobre la base de datos SQLite anterior, añadiremos un componente de ZeosDBO llamado «ZQuery», en la propiedad «Connection» del «ZQuery» seleccionaremos el ZConnection anterior («ZConnection1»):

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Para poder mostrar los resultados de las consultas SQL necesitaremos el componente de Delphi «DBGrid», para enlazar el DBGrid con el ZQuery utilizaremos un componente de Delphi «DataSource», en la propiedad «DataSet» de este componente introduciremos el nombre del componente ZQuery («ZQuery1»):

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

También enlazaremos el componente «DBGrid» con el DataSource, mediante la propiedad «DataSource» del «DBGrid»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Para permitir ejecutar consultas SQL personalizadas añadiremos un componente «Memo» de la pestaña «Standard», añadiremos también un «Button»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Añadiremos también un CheckBox para diferenciar las consultas DML (Data Manipulation Language) de tipo INSERT, UPDATE, DELETE, SELECT de las consultas DLL (Data definition Language) de tipo CREATE, ALTER, DROP, TRUNCATE.

En el evento «Click» del «Button» añadiremos el siguiente código Delphi que será el que ejecute la sentencia SQL introducida en el Memo para SQLite:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if FileExists (ZConnection1.Database) then
  begin
    ZQuery1.Close;
    ZQuery1.SQL.Clear;
    ZQuery1.SQL.Text := Memo1.Text;
    if CheckBox1.Checked then
      ZQuery1.Open
    else
      ZQuery1.ExecSQL;
  end
  else
    MessageDlg('No se ha encontrado el fichero de BD SQLite: ' +
        ZConnection1.Database, mtInformation, [mbok], 0);
end;

end.

Pulsaremos F9 ó «Run» – «Run» para compilar la apliacación. Para probarla crearemos una tabla llamada «factura» con el siguiente código SQL:

create table factura (
codigo integer primary key autoincrement,
codigocliente integer not null,
fecha date default current_date,
cobrada boolean)

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Probaremos también a insertar algunos registros en la tabla añadida anteriormente:

insert into factura (codigocliente, fecha, cobrada)
values (1, ‘2009-04-04’, ‘false’)

Tras insertar los registros, marcaremos el check «Consulta de selección», añadiremos el SQL:

select * from factura

Pulsaremos en «Ejecutar» y podremos ver el resultado en el DBGrid:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

La gran ventaja de utilizar los componentes ZeosDBO gratuitos para acceso nativo a SQLite es que podremos utilizar el resto de componentes de acceso a datos de Borland Delphi, por ejemplo, podremos realizar la siguiente aplicación casi sin utilizar código fuente. Para ello añadiremos unos DBEdit (de la pestaña «Data Controls» de Delphi), enlazaremos estos DBEdit con el ZQuery mediante la propiedad «DataSource» de los DBEdit, donde pondremos «DataSource1». Para poder movernos por los registros, insertar y eliminar también añadiremos un «DBNavigator» (también lo enlazaremos con el «ZQuery1» mediante la propiedad «DataSource»):

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

En la propiedad «SQL» del componente ZQuery1 añadiremos la siguiente consulta SQL:

select * from factura

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Haremos doble clic sobre el «ZQuery1», pulsaremos con el botón derecho del ratón sobre la ventana del editor de campos, seleccionaremos «Add all fields»:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Si la conexión se establece correctamente con la base de datos SQLite se añadirán todos los campos de la tabla «factura» (la seleccionada en la consulta SQL del ZQuery1):

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

En los componentes DBEdit, en la propiedad «DataField» de cada uno de ellos, seleccionaremos el campo que queramos mostrar (codigo, codigocliente, fecha, …):

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

Por último, para que cuando se inicie la aplicación se realice la conexión a la base de datos y se activen los componentes, en el evento «OnCreate» del formulario pondremos el siguiente código:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ZConnection1.Connect;
  ZQuery1.Open;
end;

La aplicación en funcionamiento:

Acceso SQLite 3 mediante Delphi 6 y ZeosDBO en Windows XP - Acceso a SQLite con Delphi y ZeosDBO

A continuación os mostramos un vídeo que muestra un ejemplo sobre cómo crear una base de datos SQLite desde la línea de comandos, también explica paso a paso cómo crear una aplicación en Delphi utilizando ZeosDBO para acceder a SQLite, creando un DBGrid para mostrar el resultado de las consultas SQL. También añadimos controles enlazados para mostrar que con Delphi y ZeosDBO se puede acceder a una base de datos SQLite sin a penas utilizar código fuente:

Como hemos demostrado, gracias a ZeosDBO (componente gratuito) y a Delphi podremos realizar una acceso nativo a SQLite sin necesidad de instalar software adicional. Podremos realizar aplicaciones completas con acceso a base de datos SQLite. Y, además, gracias a la integración que aportan los componentes ZeosDBO con Delphi, podremos utilizar los compones de acceso a datos de Delphi. En el ejemplo anterior hemos realizado un ejemplo que permite visualizar, añadir, modificar y eliminar registros de una tabla con sólo dos líneas de código.