Cómo instalar los componentes de acceso a base de datos ZeosLIB 7.2.10 (ZEOSDBO) en el IDE de desarrollo Delphi 10.3. Estos componentes permiten el acceso nativo a MySQL, MariaDB, Firebird, PostgreSQL, Interbase, MS SQL Server, SAP Adaptive (anteriormente Sybase), Oracle y SQLite. Realizaremos una aplicación de prueba en Delphi 10.3 que usa estos componentes ZeosDBO para mostrar los registros de una tabla MySQL (válido para MariaDB) en un DBGrid.

Requisitos para instalar componentes ZeosLib (ZEOSDBO) en Embarcadero Delphi 10.3

Necesitaremos disponer del IDE de desarrollo Delphi 10.3 (sirve cualquier otra versión de Delphi). En el siguiente enlace explicamos cómo instalar la versión community (gratuita) de Delphi 10.3:

Descargaremos la última versión estable del componente ZeosLib, desde su web oficial, en:

En nuestro caso, descargaremos la versión actual ZeosDBO 7.2.10.

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Descomprimiremos el fichero descargado zeosdbo-7.2.10-stable.zip y copiaremos las carpetas «packages» y «src» a una carpeta dentro del directorio de instalación de Delphi 10, por ejemplo en la carpeta ZEOS, en:

C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS

Dentro de la carpeta «packages», dejaremos únicamente la carpeta de la versión de Delphi que estemos usando, en nuestro caso dejaremos: DelphiXE10.4.

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Abriremos Delphi 10.3 Community Edition (o la versión que tengamos) como administradores, es importante hacerlo así porque si hemos copiado la carpeta ZEOS a Archivos de programa, necesitaremos elevación de privilegios para compilar y preparar los componentes. Para abrirlo como administradores, hay que pulsar con el botón derecho del ratón sobre el acceso directo de Delphi 10 y elegir:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

En caso de no abrir Delphi como administradores, puede que al realizar el proceso de compilación y preparación (que explicamos más adelante), nos muestre el error:

Checking project dependencies…
Building ZCore.dproj (Debug, Win32)
[MSBuild Error] The «CreateRcFile» task failed unexpectedly.
System.UnauthorizedAccessException: Access to the path ‘C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS\packages\DelphiXE10.4\ZCore.vrc’ is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
at System.IO.StreamWriter..ctor(String path, Boolean append)
at Borland.Build.Tasks.Shared.CreateRcFile.WriteWindowsRC()
at Borland.Build.Tasks.Shared.CreateRcFile.Execute()
at Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask(EngineProxy engineProxy, ItemBucket bucket, TaskExecutionMode howToExecuteTask, ITask task, Boolean& taskResult)
Failed

Pulsaremos en el menú «File» – «Open»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Abriremos el fichero ZeosDbo.groupproj:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Compilaremos (Compile) y prepararemos (Build) cada proyecto .bpl: ZCore270, ZPlain270, ZParseSql270, ZDbc270 y ZComponent270. Para ello, pulsando con el botón derecho del ratón sobre ZCore270.bpl, en el menú emergente, elegiremos «Compile»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Una vez compilado, volveremos a pulsar con el botón derecho del ratón sobre ZCore270.bpl y elegiremos «Build»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Repetiremos el proceso anterior para ZPlain270.bpl, ZParseSql270.bpl, ZDbc270.bpl y ZComponent270.bpl. No para ZComponentDesign270.bpl. Una vez compilados y preparados todos, pulsaremos con el botón derecho del ratón sobre «ZComponentDesing270.bpl» y en el menú emergente pulsaremos en «Install»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Si todo es correcto nos mostrará el mensaje siguiente, indicando que los siguientes componentes han sido registrados: TZConnection, TZConnectionGroup, TZGroupedConnection, TZIBEventAlerter, TZPgEventAlerter, TZQuery, TZReadOnlyQuery, TZSequence, TZSQLMetadata, TZSQLMonitor, TZSQLProcessor, TZStoredProc, TZTable, TZUpdateSQL. Pulsaremos «OK»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Verificaremos que nos aparece una nueva pestaña en la paleta de componentes, llamada «Zeos Access», con los componentes de ZeosDBO (ZeosLib):

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Cerraremos Delphi 10, sin guardar los cambios.

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3
Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Si hemos colocado los ficheros de ZeosLib fuera de la carpeta estándar de Delphi para librerías de componentes, necesitaremos indicar al IDE dónde está dicha carpeta, de lo contrario no funcionará la compilación de nuestra aplicación Delphi con estos componentes. Para ello, con Delphi 10 abierto, pulsaremos en el menú «Tools» – «Options»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Desplegaremos «Language» – «Delphi» – «Library» y pulsaremos en el botón de selección de directorios de «Library path»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Pulsaremos en el botón de selección de carpeta:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Seleccionaremos la subcarpeta «component» de «src» dentro de la carpeta de ZEOS:

C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS\src\component

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Pulsaremos en «Add» para agregarla:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Pulsaremos en «OK»:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Y pulsaremos en «Save» para guardar los cambios:

Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3

Repetiremos el proceso anterior para agregar las carpetas:

  • C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS\src\core
  • C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS\src\dbc
  • C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS\src\parsesql
  • C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS\src\plain

Probando componentes ZeosDBO con acceso a MySQL en Delphi 10

Descarga de la librería DLL del motor de base de datos MySQL

En primer lugar descargaremos la librería dll necesaria, desde la web oficial del motor de base de datos, en este caso, desde la web de MySQL. Descargaremos la versión 5.7.33 de 32 bits para Windows, el paquete comprimido zip que incluye la librería dll: Windows (x86, 32-bit), ZIP Archive.

Probando componentes ZeosDBO con acceso a MySQL en Delphi 10

Descomprimiremos el fichero descargado mysql-5.7.33-win32.zip, y en la carpeta lib copiaremos el fichero libmysql.dll a la carpeta del ejecutable de nuestra aplicación o bien a la carpeta C:\Windows\System32 (para que esté disponible para cualquier aplicación que lo requiera). El resto de ficheros de la descarga de MySQL no serán necesarios, podremos eliminarlos. Es importante saber dónde hemos copiado el fichero libmysql.dll porque posteriormente, en el componente ZConnection, deberemos indicarlo (como explicamos más adelante).

Probando componentes ZeosDBO con acceso a MySQL en Delphi 10

Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO

Realizaremos una sencilla aplicación de prueba de los componentes, por ejemplo, accediendo a un servidor de base de datos MySQL (válido para MariaDB).

Crearemos un nuevo proyecto Windows VCL Application, desde el menú «File» – «New» – «Windows VCL Application – Delphi»:

Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO

Agregaremos los siguientes componentes al formulario que se crea por defecto y que será la ventana principal de nuestra aplicación, siguiendo el orden que indicamos a continuación:

  • ZConnection: de la paleta «Zeos Access», será el encargado de realizar la conexión con la base de datos MySQL (MariaDB). Este componente utilizará la librería libmysql.dll que deberemos descargar (como hemos explicado anteriormente). Las propiedades más importantes de este componente, que deberemos añadir, bien por código (es lo lógico, cogiendo los datos de acceso de un fichero INI o bien del regedit o cualquier otro fichero de configuración XML) o bien en tiempo de diseño, en el propio IDE. Si bien esto último no es lo recomendable, lo haremos así que es lo más rápido para verificar los componentes ZeosLib. De esta forma apenas usaremos código fuente. Modificaremos las siguinetes propiedades:
    • Catalog: indicaremos en esta propiedad el nombre de la base de datos MySQL a la que nos conectaremos.
    • Database: podremos dejar el mismo nombre que anteriormente.
    • HostName: IP o nombre DNS de red del servidor con la base de datos MySQL/MariaDB.
    • LibraryLocation: ubicación y nombre del fichero DLL de acceso a MySQL, en nuestro caso introduciremos aquí: C:\Windows\System32\libmysql.dll.
    • Password: contraseña del usuario con acceso al servidor de MySQL.
    • Port: número de puerto de conexión con el servidor MySQL, por defecto suele ser el 3306.
    • Protocol: seleccionaremos en el desplegable la versión y el motor de base de datos al que queramos acceder, en nuestro caso mysql-5.
    • User: usuario del servidor MySQL Server que usaremos para acceder.
Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO
  • ZTable: de la paleta «Zeos Access», será el encargado de acceder a la tabla que indiquemos, del servidor MySQL y de la base de datos (catálogo) indicados en el ZConnection anterior. Por tanto este componente tendrá dos propiedades fundamentales:
    • Connection: indicaremos el ZConnection creado anteriormente, nos aparecerá en el desplegable.
    • TableName: indicaremos el nombre de la tabla de la base de datos MySQL. Se mostrarán todos los campos y registros de esta tabla en el grid.
Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO
  • DataSource: de la paleta «Data Access». Este componente viene con Delphi 10. Será el encargado de enlazar el ZTable anterior con los componentes visuales DBGrid y DBNavigator. Este componente tendrá una propiedad fundamental:
    • DataSet: en el desplegable elegiremos el ZTable creado anteriormente.
Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO
  • DBGrid: de la paleta «Data Controls», viene incluido en Delphi 10. Será el encargado de mostrar los datos de la tabla elegida en el ZTable. Su propiedad más importante será:
    • DataSource: seleccionaremos del desplegable el DataSource añadido anteriormente.
Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO
  • DBNavigator: de la paleta «Data Controls», viene incluido en Delphi 10. Será el encargado de mostrar una barra con los siguientes botones: ir al primer registro, retroceder un registro, avanzar un registro, ir al último registro, añadir un nuevo registro, eliminar el registro actual, editar el registro actual, guardar los cambios en el registro actual, deshacer cambios y refrescar. Todos estos botones no necesitarán código fuente. Su propiedad más importante será:
    • DataSource: al igual que para el DBGrid, elegiremos del desplegable el DataSource creado anteriormente.
Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO

Con estos componentes y con sus propiedades más importantes introducidas, Delphi nos permite, incluso, conectar con la base de datos directamente, en modo de diseño, para comprobar que todo funciona. Para ello será suficiente con cambiar a true la propiedad «Connected» del ZConnection, esto realizará la conexión con el servidor MySQL indicado. Y en el ZTable, cambiaremos la propiedad «Active» a true. De esta forma, si todo es correcto, se mostrarán los campos y registros de la tabla especificada:

Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO

Si preparamos la aplicación (Build), para generar el ejecutable, pulsando en el menú «Project» – «Build All Projects»:

Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO

Accediendo a la carpeta del proyecto …\Win32\Debug, veremos que nos ha creado un ejecutable, en nuestro aso con el nombre del proyecto ProyectoA_Acceso_MySQL_ZEOSDBO.exe. Si abrimos el ejecutable tendremos nuestra aplicación funconando en equipos Windows con acceso a MySQL sin haber escrito ni una sola línea de código fuete. Funcionarán todos los botones del componente DBNavigator, por lo que podremos eliminar, modificar y crear registros.

Crear aplicación Delphi 10 con acceso nativo a MySQL/MariaDB con ZeosDBO

Por supuesto, muchas de las propiedades que hemos modificado en tiempo de diseño, para una aplicación de producción, se deben establecer por código, de esta forma podremos conectarnos al servidor que establezcamos en un fichero de configuración con los datos que hayamos indicado.

A modo de ejemplo, si queremos activar la conexión con la base de datos cuando se haga doble clic sobre el grid (rejilla de datos), podremos añadir el siguiente código Delphi al evento OnDoubleClick:

En el código anterior, también a modo de ejemplo, cargamos la librería dll libmysql.dll desde la misma carpeta que el ejecutable de la aplicación. Por tanto, para que funcione, la librería MySQL debe estar en la misma carpeta que el ejecutable. Lo que hacemos en el código es activar la conexión en el ZConnection, activar la tabla en el ZTable y refrescar el grid (DBGrid).

Para que la aplicación funcione, únicamente necesitaremos el ejecutable y la librería DLL. Copiando estos ficheros a cualquier equipo Windows, sin instalar otros componentes, funcionará.