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.
- Instalar componentes ZeosLib ZEOSDBO en Embarcadero Delphi 10.3.
- Probando componentes ZeosDBO con acceso a MySQL en Delphi 10.
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.
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:
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»:
Abriremos el fichero ZeosDbo.groupproj:
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»:
Una vez compilado, volveremos a pulsar con el botón derecho del ratón sobre ZCore270.bpl y elegiremos «Build»:
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»:
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»:
Verificaremos que nos aparece una nueva pestaña en la paleta de componentes, llamada «Zeos Access», con los componentes de ZeosDBO (ZeosLib):
Cerraremos Delphi 10, sin guardar los cambios.
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»:
Desplegaremos «Language» – «Delphi» – «Library» y pulsaremos en el botón de selección de directorios de «Library path»:
Pulsaremos en el botón de selección de carpeta:
Seleccionaremos la subcarpeta «component» de «src» dentro de la carpeta de ZEOS:
C:\Program Files (x86)\Embarcadero\Studio\20.0\ZEOS\src\component
Pulsaremos en «Add» para agregarla:
Pulsaremos en «OK»:
Y pulsaremos en «Save» para guardar los cambios:
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.
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).
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»:
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.
- 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.
- 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.
- 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.
- 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.
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:
Si preparamos la aplicación (Build), para generar el ejecutable, pulsando en el menú «Project» – «Build All Projects»:
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.
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:
1 2 3 4 5 6 7 8 9 |
procedure TformPrincipal.DBGrid1DblClick(Sender: TObject); begin ZConnection1.LibraryLocation := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'libmysql.dll'; ZConnection1.Connected := true; ZTable1.Active := true; DBGrid1.Refresh; end; |
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á.