Utiliser dbExpress pour se connecter à une base de donnes MySQL

Comme le framework FireDAC, les composants dbExpress ont besoin des DLL clientes de MySQL pour se connecter à ce serveur de bases de données relationnelles.

Le hic c'est que dbExpress passe par une DLL intermédiaire (dbxmys.dll) entre nos programmes et la DLL cliente de la base de données. A notre grand désarroi elle s'attend donc à trouver une version plutôt précise de cette bonne vieille libmysql.dll

Reste donc à savoir laquelle et comment la trouver.

La réponse se trouve un peu cachée dans la documentation du côté d'Embarcadero : sur les messages d'erreur que l'on obtient lorsqu'on utilise la mauvaise version de libmysql.dll. Tout est là :

MYSQL Client 5.1 est à la fois supporté et requis.

Il faut donc une version 5.1 de libmysql.dll, pas une autre. Heureusement il est toujours possible de les trouver pour du 32 et du 64 bits sur les archives de téléchargement chez MySQL.

FireDAC n'a pas cette restriction car il intègre directement dans nos programmes les accès aux DLL clientes et peut s'utiliser sur différentes versions à condition bien entendu qu'elles soient gérées par le composant TFDPhysMySQLDriverLink. Dans la version 10.3.3 Rio FireDAC nous permet ainsi de travailler avec les versions 8.0.x et antérieures de MySQL. Ce n'est donc pas le cas de dbExpress qui est limité à ce que supporte la version 5.1.x de libmysql.dll (et il semble que la DLL 5.1 de libmysql.dll fonctionne toujours avec la version 8 du serveur MySQL même si ce n'est pas officiellement supporté).

Pour en revenir à dbExpress, si vous avez besoin de MySQL dans l'un de vos projets VCL, FireMonkey (ou autre), il vous faut donc déployer la bonne version de libmysql.dll (32 ou 64 bits selon vos besoins) accompagnée de dbxmys.dll qui est disponible dans le dossier "Redist" de votre installation de RAD Studio, Delphi et C++Builder. dbxmys.dll est ajoutée automatiquement au déploiement de votre projet si vous cocher la bonne case dans "Projets / Déploiement". Il vous faudra cependant y ajouter libmysql.dll et ses déclinaisons à la main, les mettre dans un dossier accessible par vos programmes.

J'ai fait des tests avec la version 5.1.73 de MySQL et ça passe correctement sous Windows en 32 et 64 bits. Vous devez donc pouvoir partir sur cette version dans vos projets, même si je recommande si vous le pouvez de passer à FireDAC.

Si vous avez besoin de vous connecter avec une version plus récente de MySQL et que les DLL clientes ne passent pas, vous pouvez aussi opter pour les drivers dbExpress proposés par Devart. Ils se passent de libmysql.dll ce qui rend l'accès moins complexe à configurer.


A lire aussi

Utiliser dbExpress pour se connecter à une base de donnes MySQL (24/12/2019)