Desarrollar una aplicación 100% nativa de Windows 10 y Windows 11 con acceso a MySQL y MariaDB usando el IDE Delphi 12 CE y el componente incluido en el IDE FireDAC. El acceso al servidor de base de datos también será nativo y no requerirá de instalación de software adicional.

Requisitos para desarrollar aplicación nativa Windows 10 y 11 con acceso a MySQL/MariaDB con Delphi 12 Community Edition

En primer lugar, necesitaremos disponer del IDE de desarrollo Delphi 12 Community Edition, que podremos descargar e instalar de forma gratuita desde su web oficial de EmbarcaderoInc:

En el siguiente tutorial indicamos cómo instalar Delphi 10 CE (el proceso para Delphi 12 CE es similar):

Por otro lado, puesto que desarrollaremos una aplicación nativa Windows 10 y 11 con acceso a un servidor de base de datos MySQL/MariaDB, necesitaremos disponer de acceso a dicho servidor (IP, usuario y contraseña). En el siguiente enlace mostramos cómo instalar un servidor de base de datos MariaDB de 64 bits en Windows 11:

No necesitaremos instalar componentes adicionales en Delphi para el acceso a MySQL/MariaDB, dado que ya incluye de serie los componentes FireDAC que, además, son los recomendados por el propio fabricante para acceso a estos motores de base de datos.

Puesto que realizaremos un acceso nativo al servidor de base de datos MariaDB/MySQL, necesitaremos la librería DLL correspondiente (MariaDB Connector/C o MySQL Connector/C). Dicho fichero debe estar o bien en la carpeta de C:\Windows\SysWOW64 o bien en la carpeta del ejecutable de la aplicación. Si está en otra ruta, podremos indicársela en el componente TFDPhysMySQLDriverLink, como explicaremos en el siguiente punto. La descarga de la librería libmysql.dll o libmariadb.dll, no se realiza, como indica la documentación, desde https://dev.mysql.com/downloads/c-api/, en dicha descarga NO se encuentra el fichero libmysql.dll necesario. En su lugar, obtendremos esta librería desde la instalación de MariaDB Server, que en una instalación por defecto en Windows suele estar en:

C:\Program Files\MariaDB 11.7\lib

Para el caso de la librería para aplicaciones Windows 32-bit, la librería suele estar en:

C:\Program Files (x86)\MariaDB 10.1\lib

Para no tener que instalar MySQL Server o MariaDB Server, dejamos la descarga de la librería libmariadb.dll en su versión de 64 bit 3.4.4 (11.7.2), correspondiente a MariaDB Connector/C, en nuestro sitio web:

La descarga del fichero homólogo libmysql.dll de 64 bit para MySQL Connector/C:

  • .

Crear aplicación Windows 10 y 11 VCL en Delphi 12 con acceso a base de datos MySQL/MariaDB

Abriremos Delphi 12 Community Edition y pulsaremos en el menú «File» – «Windows VCL Application – Delphi»:

Indicaremos que la arquitectura del ejecutable de nuestra aplicación será Windows 64 bits. Para ello, en el desplegable correspondiente (por defecto Windows 32-bit), elegiremos Windows 64-bit:

Realizaremos una primera compilación de la aplicación, para que genere las carpetas del ejecutable y el propio ejecutable. De esta forma, podremos copiar en esta carpeta el fichero libmysql.dll necesario. Para ello pulsaremos en el botón Run o bien la tecla F9:

Se iniciará la aplicación, con la ventana principal vacía:

Y habrá generado, dentro de la carpeta de nuestro proyecto, la subcarpeta Win64\Debug y dentro de ella el ejecutable. Será en esta carpeta donde coloquemos el fichero libmariadb.dll de la librería DLL de MariaDB Connector/C, que debemos tener descargado:

Es recomendable cambiar su nombre por libmysql.dll:

Volveremos a Delphi 12 y añadiremos el primer componente FireDAC, con el que indicaremos dónde se encuentra el fichero de la librería DLL de MariaDB Connector/C. Desde la paleta de componentes, en el grupo «FireDAC Links», añadiremos el componente TFDPhysMySQLDriverLink:

En este componente, indicaremos las siguientes propiedades:

  • BaseDriverID: MySQL.
  • DriverID: FL_MySQL.
  • VendorLib: ruta y nombre del fichero libmysql.dll.

Algunos de estos valores los estableceremos en tiempo de ejecución, por código, pero también los establecemos en tiempo de diseño para, posteriormente, realizar la conexión a la base de datos desde el diseño, para obtener los campos y otros valores:

Agregaremos ahora el componente que conectará con el servidor de MySQL/MariaDB, desde la paleta de componentes, en el grupo «FireDAC», añadiremos el componente TFDConnection:

Le estableceremos un nombre en la propiedad Name, por ejemplo BD y en la propiedad DriverName elegiremos FL_MySQL. De esta forma enlazaremos el FDConnection con el FDPhysMySQLDriverLink:

En la propiedad Params del FDConnection, estableceremos las siguientes propiedades:

  • Database: nombre de la base de datos (catálogo/esquema) de MySQL/MariaDB al que nos conectaremos. Debe existir en el servidor de base de datos. En este caso facturacion.
  • Server: IP o nombre DNS del servidor de MySQL/MariaDB.
  • Port: puerto de conexión con el servidor de MySQL/MariaDB.
  • UserName: nombre de usuario del servidor de MySQL/MariaDB con permisos suficientes para acceso a la base de datos y a las tablas con las que queramos trabajar.
  • Password: contraseña del usuario anterior.

Estableceremos la propiedad LoginPrompt a False, para que no nos muestre una ventana de introducción de usuario y contraseña.

Al igual que para el FDPhysMySQLDriverLink, para el FDConnection todos estos valores los estableceremos en tiempo de ejecución, por código, pero también los establecemos en tiempo de diseño para, posteriormente, realizar la conexión a la base de datos desde el diseño, para obtener los campos y otros valores:

Agregaremos un componente de la paleta «FireDAC» llamado TFDQuery, que nos permitirá ejecutar una consulta SQL para mostrar los registros de la tabla facturas de la base de datos facturacion:

En la propiedad Connection del componente TFDQuery seleccionaremos el FDConnection agregado anteriormente:

En la propiedad SQL del componente FDQuery introduciremos la consulta SQL:

Agregaremos ahora el componente TDataSource de la paleta Data Access. Este componente será el que enlace el grid donde mostraremos los registros de la tabla factura con el TFDQuery:

En la propiedad DataSet del TDataSource elegiremos el TFDQuery agregado anteriormente, de esta forma quedarán enlazados:

Añadiremos un componente visual para mostrar los registros de la tabla facturas al usuario, un TDBGrid, de la paleta Data Controls:

Enlazaremos el componente visual TDBGrid con el componente de acceso a datos TDataSource mediante la propiedad

De forma adicional, agregaremos un componente visual TDBNavigator, que mostrará los botones típicos de desplazamiento de registros (anterior, siguiente, último, primero) y los botones de modificación: insertar, eliminar, modificar, guardar. Para ello, lo elegiremos de la paleta Data Controls:

Y en su propiedad DataSource seleccionaremos el TDataSource para enlazar el componente visual con el componente de acceso a datos:

Añadiremos, por último, un botón TButton de la paleta Standard:

En el evento Click de dicho botón:

Añadiremos el siguiente código:

Será el único código Delphi Pascal que usemos para esta aplicación y no es estrictamente necesario, dado que hemos definido los datos de conexión en tiempo de diseño, los mostramos a modo de ejemplo de cómo modificar los valores de conexión: servidor, usuario, contraseña, parámetros, ubicación del driver (librería de conexión a MySQL/MariaDB), etc.. Evidentemente, para una aplicación de producción, debemos usar un código de conexión similar al anterior, obteniendo la contraseña desde un fichero o BD o clave de registro cifrada, en este caso es una prueba de concepto y no hemos cifrado la contraseña.

Dado que vamos a realizar la conexión a la base de datos por código, en tiempo de ejecución, desconectaremos el componente TFD

Si compilamos la aplicación, pulsando la tecla F9, nos mostrará el formulario principal con los componentes desactivados:

Si pulsamos en el botón «Conectar», realizará la conexión con el servidor de base de datos MariaDB indicado en el código y activará los componentes, mostrando los registros de la tabla facturas y habilitando los botones de la barra de navegación, que funcionarán (sin haber añadido código). Podremos añadir facturas, eliminar facturas, modificar facturas y movernos por los registros:

En el siguiente tutorial mostraremos cómo mejorar la visualización de los registros en el TDBGrid, cómo agregar o quitar columnas y cómo agregar componentes de edición de datos de un registro sin código fuente.

Publicar aplicación para ejecutarla en cualquier otro equipo Windows

Una de las maravillas del IDE Delphi 12 de desarrollo de aplicaciones VCL Windows es que NO necesitaremos instalar ningún tipo de software adicional para que funcionen. Únicamente necesitaremos el ejecutable de nuestra aplicación, que se genera automáticamente cada vez que compilamos y el fichero DLL del MariaDB Connnector/C libmysql.dll, nada más. Con estos dos ficheros la aplicación funcionará en cualquier otro equipo Windows, sin necesidad de realizar instalador:

Posibles errores y su solución

[FireDAC][Phys][MySQL] Authentication plugin ‘auth_gssapi_client’ cannot be loaded: No se puede encontrar el módulo especificado.

En este caso, aunque el mensaje de error pueda «despistar» un poco, el motivo es porque no estamos estableciendo la contraseña correcta en el usuario de acceso a MySQL/MariaDB en el componente TFDConnection, en la propiedad «Params»- «Password».


[FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysql.dll, libmariadb or libmysqld.dll]. No se puede encontrar el módulo especificado. Hint: check it is in the PATH or application EXE directories, and has x86 bitness.

Este error se produce cuando el ejecutable de nuestra aplicación no es capaz de encontrar el fichero libmysql.dll. Para solucionarlo, seguiremos los pasos de este punto del tutorial, donde indicamos que es recomendable que esté en la carpeta del ejecutable o en otra carpeta, pero siempre indicada en el componente TFDPhysMySQLDriverLink.


[FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysql.dll, libmariadb or libmysqld.dll]. libmysql.dll has unsupported architecture [x64]. Required [x86]. No se puede encontrar el módulo especificado. Hint: check it is in the PATH or application EXE directories, and has x86 bitness.

Este error se produce cuando usamos el fichero libmysql.dll para 64 bits y compilamos y generamos el ejecutable de nuestra aplicación en Windows-64bit. Para solucionarlo es suficiente con, o bien utilizar el fichero libmysql.dll correcto para 32 bits o bien compilar y generar el ejecutable de nuestra aplicación en 64 bits, teniendo en cuenta que sólo funcionará con equipos con sistema operativo de 64 bits (que hoy en día son casi el 100%).