|
|
MySQL étant un SGBD de plus en plus utilisé et n'ayant pas trouvé de tutoriel concernant l'interfaçage Delphi/MySQL, j'ai donc décidé d'en écrire un... Ceci montre uniquement l'aspect interfaçage entre Delphi et MySQL. Il ne s'agit en aucun cas d'un tutoriel sur la programmation en Delphi ou sur l'administration de MySQL. Il existe différentes méthodes et différents composants pour réaliser l'interfaçage (TMysql, ...). Cependant la grande majorité de ceux-ci se basent sur l'unité "mysql.pas". "Mysql.pas" est une adaptation directe de "mysql.h" et de deux autres fichiers d'entête C requis pour ecrire des clients pour le serveur de base de données de MySQL. Ainsi, j'ai décidé de montrer comment interfacer Delphi avec un serveur MySQL directement à partir de cette unité. La compréhension du fonctionnement d'autres composants se basant sur mysql.pas n'en sera que plus aisée.
Pour commencer, j'utilise Delphi 6 Personnal Edition. L'unité "mysql.pas" se trouve à l'adresse : http://www.fichtner.net/delphi/mysql.delphi.phtml. Nous utilisons la version compilée 3.23.57 du serveur MySQL pour Windows (Ceci uniquement pour avoir un serveur MySQL en local pour l'interfacage pour faire les tests. Si vous disposer déjà d'un tel serveur, quelle que soit la plateforme, inutile de le télécharger).
Installation du serveur MySQL (si vous ne possédez pas de serveur MySQL) : -Décompressez l'archive. -Lancez le setup.exe. -Installez mysql dans "c:\mysql" (si vous changez ce chemin par défaut, référez vous au manuel MySQL pour y adapter le fichier de configuration my.cnf). Lancement du serveur MySQL : - Lancez une invite de commande MsDos - Tapez : cd \mysql\bin - Puis : mysqld (si vous êtes sous windows 95,98,Me) ou mysqld-nt (si vous êtes sous NT/2000/XP)
Commencez par créer un répertoire pour le programme que nous allons créer (exemple : "c:\testmysql") Copiez dans ce répertoire l'unité "mysql.pas" et le fichier "libmySQL.dll" présent sous" c:\mysql\lib\opt". Si vous n'avez pas installé de serveur MySQL, télécharger la DLL directement sur le site http://www.mysql.com/. Cette DLL devra obligatoirement être redistribuée avec votre programme sinon ce dernier ne pourra fonctionner sur d'autres machines. Complétez la partie "uses" de l'unité en y ajoutant "mysql" :
Ceci permet de pouvoir faire appel à l'unité mysql qui se charge d'appeler la DLL. Dans les déclarations publiques, ajoutez :
Dans le haut de l'implémentation, ajouter les deux constantes correspondant au nom de la base de données que nous allons créer ainsi que le nom de la table que nous allons créer.
Ajoutez un composant TButton. Modifiez sa propriété "Caption" par "Connexion à la base". Ajoutez un composant TLabel (Label1) à coté de celui-ci. Dans la propriété "Onclick" du bouton, ajoutez le code suivant :
La variable "user" correspond au nom d'utilisateur sous lequel nous voulons établir la connexion et "pwd" correspond au mot de passe (en clair) de l'utilisateur. Comme nous venons d'installer le serveur, seul l'administrateur (root) posséde un compte. Il est bien évident qu'il n'est pas judicieux de se connecter en root et encore moins de ne pas lui mettre de mot de passe mais je rappelle qu'il ne s'agit pas d'un tutoriel sur l'administration de MySQL. "Host" correspond à l'adresse ip du serveur Mysql (ici, le serveur est sur la machine locale donc mettons l'adresse du localhost) et port correspond au port ip utilisé par le serveur Mysql (par défaut 3306). "MySQL := mysql_init(nil);" initialise l'objet pour pouvoir ensuite établir une connexion sur la ligne suivante. Nous allons maintenant voir comment créer une base de données. Ajoutez un deuxième composant "TButton" dont la propriété "Caption" est "Creer une database" et un deuxième composant TLabel (Label2). Dans l'évenement "OnClick" de ce dernier bouton, complétez par :
La fonction "mysql_create" permet de créer une base de données et retourne 0 si la création est correcte. Une fois la base créée, nous allons créer une table. Ajoutez un composant TButton dont la propriété "Caption" est "créer la table" et un composant TLabel (Label3). Dans l'évenement "OnClick" de ce dernier bouton, complétez par :
La fonction "mysql_select_db" permet de travailler sur la base que nous venons de créer Pour créer une table, nous voyons alors qu'il s'agit simplement d'une requête SQL appelée par la fonction "mysql_query". C'est cette même fonction que nous allons utiliser pour remplir la table de valeurs fictives. Ajoutez un composant TButton dont la propriété "Caption" est "Remplir la table" et un composant TLabel (Label4). Dans l'évenement "OnClick" du bouton, ajoutez :
Pour vérifier le bon fonctionnement des requêtes, éxecuter le programme et cliquez successivement (et dans l'ordre) sur les 4 boutons. Quittez le programme et éxecuter la commande c:\mysql\bin\mysql -u root. Ceci permet d'avoir un client mysql. Effectuer la vérification en tapant : use testdb; select * from tb; Ceci permet de lister le contenu de la table td. Quittez le client en tapant : quit; Nous allons maintenant effectuer cette même requête, mais directement depuis notre programme Delphi. Ajoutez un composant TButton dont la propriété "Caption" est "lister le contenu de la table" et un composant TMemo (Memo1). Sur l'évenement "OnClick" du bouton, ajoutez le code suivant :
La requête SQL est la même que celle tapée sous le client MySQL. Toute autre requête SQL aurait pu convenir. Comme nous l'avons vu, les requétes SQL sont appelées par la fonction mysql_query. La fonction mysql_use_result permet de récuperer le résultat de la requéte, la fonction mysql_num_fields pemet de connaitre le nombre de champs contenus dans le resultat de la requete et la fonction mysql_fetch_row permet de récuperer un enregistrement (une ligne) du résultat de la requete. Ainsi, pour avoir toute les resultats, il faut executer la fonction mysql_fetch_row autant de fois qu'il y a d'enregistrement dans le résultat de la requete. Les lignes suivantes servent à formatter la sortie des résultats. Le dernier point important à voir concerne la déconnexion au serveur. Ajoutez un composant TButton et mettez la propriété "Caption" à "Deconnexion". Sur l'evenement Onclick, completez avec le code suivant :
Executer ensuite le programme. Cliquez sur "connexion", puis sur "lister le contenu de la table' puis sur 'deconnexion". Si vous essayez de recréer la base ou la table à nouveau, les labels vous signaleront des erreurs car ces dernières sont déjà créées.
Il est intéressant de consulter le manuel MySQL (partie API) pour connaître l'ensemble des fonctions et méthodes présentent dans la DLL : http://www.mysql.com/documentation/mysql/bychapter/index.html#Clients.
|
Tous droits réservés - Contacts |