Developpez.com - Delphi
X

Choisissez d'abord la catégorieensuite la rubrique :



Création et connexion et d'une base MySQL à l'aide de DBExpress

Partie 1/2

Dans cet article, je ne vais pas faire le tour des diférentes fonctionnalités de Delphi 6, mais essayer d'établir un premier contact avec MySQL et surtout DBExpress. Delphi offre différents type d'accès bases de données BDE, ADO, IBX, etc.. Mais tous ont un point commun ils sont définitivement ancrés à Windows. DBExpress se démarque donc de ce qui existait jusqu'à D5, il est multi-plateforme Windows et Linux. Il s'agit couche d'accès direct au dll de la base, la version livré fonctionne avec DB2, Interbase, MySQL, Oracle. Je suppose que d'autres pilotes vont venir se greffer. Comme je n'ai ni DB2, ni Oracle moi choix se limite donc a InterBase ou MySQL. Pour la nouveauté, ce sera donc MySQL. Tout d'abord il faut que MySQL soit installé et configuré, comme ce n'est pas le sujet ici, j'indiquerais simplement une URL: http://www.manucorp.com. L'auteur a crée un utilitaire (EasyPHP) qui installe et configure PHP et MySQL en 2 clics :-) Je supposerais donc à partir d'ici que MySQL est installé, configuré et fonctionne sur la machine de test.

Première connexion au partir de DBExpress

La palette de DBExpress

Je vais d'abord tester une connexion à partir de l'IDE de Delphi 6, juste pour voir si tout fonctionne bien. Je pose donc d'un TSQLConnection sur la feuille de ma nouvelle application, je double clique dessus et j'obtiens un gestionnaire de connexion pour DBExpress ressemblant à celui-ci

Le même qu'avec Kylix :-)) Rien de bien sorcier à configurer, les boutons + et -, servent à ajouter et retirer des connections. Il suffira donc d'en créer une du genre de celle au-dessus. EasyPHP ayant configuré MySQL pour nous, nous calerons simplement notre configuration sur celle existante. Je valide, et dans l'inspecteur d'objet pour plus de souplesse, je passe le LoginPrompt du TSQLConnection à false. Instant de vérité on double clique sur connect et........ TRUE. :-))) Une remarque malgré tout, dans mon cas le répertoire "TestD6", c'est à dire la base existait déjà, il semble que le nom d'une base soit nécessaire pour une connexion, il suffit donc pour la première connexion d'utiliser une base existante. MySQL semble en créer une à son nom, il faut donc l'utiliser par défaut pour une première connexion. Concrètement DataBase = C:\EasyPHP\mysql\data\mysql. Plus tard je testerais le travail en réseau, pour le moment le local suffira. Il va donc falloir créer une base, se connecter dessus, puis créer une table, et enfin insérer quelques données

D'abord une Interface(minimaliste) pour les tests, avec un petit TMemo, un TBitBtn, et un TSQLQuery. Le composant TSQLConnection, était déjà utilisé.

Le menu fichier sert à charger des commandes externes, le bouton clear se passe de commentaire et le bouton Execute appelle la procédure Execmemo, qui nous permettra d'interagir avec MySQL

 

La procédure suivante permettra le changement de connexion à la volée, et nous connecteras sur la base passé en paramètre

Créer une base

Une Base pour MySQL ce n'est qu'un répertoire! Lors de la première connexion j'ai utilisé la base MySQL, puis à partir de cette connexion, crée la base 'TESTD6'. La commande SQL suivante "CREATE DATABASE TESTD6" saisie dans le memo et exécution.

Créer une table

Rien de spécial mais, je vais reprendre la structure d'une table existante sous IB 6, comme cela j'aurais une quantité de données pour faire mes essais. Les index la clé primaire seront recopiés à l'identique d'une table vers l'autre, au passage je note que mySQL ne semble pas avoir d'index descendants ?

C'est un peu monstrueux pour un test, mais je veux vraiment reprendre une table existante.

Des données

Pour ce qui est des données je vais les exporter de ma table Interbase vers un fichier texte, avec une structure genre 'INSERT INTO..'. La procédure suivante servira à l'importation.

Cette commande est exécutée à partir d'un menu, il s'agit d'une boucle qui charge ligne à ligne tous les enregistrements. Tout se passe très bien. J'importe donc une table de 25000 enregistrements, sur ce genre de plaisanterie MySQL se montre plus rapide qu'Interbase. Comme la version que je possède ne gère pas les transactions, je suppose que ceci explique cela ? De toute façon, normalement la vitesse d'insertion n'est pas un critère fondamental.

Grâce à Delphi 6 et à DBExpress, nous avons donc maintenant la possibilité de nous connecter à MySQL en natif. Kylix offrant la même chose sous Linux, le choix d'Interbase ou de MySQL, devient une évidence pour le développeur Delphi/Kylix. DBExpress permet justement de rendre la méthode d'accès homogène entre Windows et Linux. C'est à prendre en considération lors d'un nouveau développement, et à mon goût il s'agit d'une grande avancé.

Des commandes simples comme des "select * from FICHES where.." passent sans problème. J'ajoute des DBedit pour visualiser le résultat, tout fonctionne. Jusqu'ici DBExpress remplit son contrat. Les ennuis commencent lors de la pose d'un TDBGrid... DBExpress est unidirectionnel, et les déplacements dans l'ensemble de résultat du TSQLQuery ne peuvent se faire que dans le sens de la progression. Au début j'ai trouvé cela frustrant, finalement Delphi 6 nous offre plusieurs solutions pour outrepasser cet état unidirectionnel Une des ces solutions, sort un peu du cadre de DBExpress,donc pour la partie 2 , ajout d'un DBGrib et déplacement dans les données :-))

Le projet devrait à terme me fournir une alternative à PhpMyAdmin et son interface Web. A l'heure ou j'écris ses lignes l'aspect est du genre de celui de IB Expert pour ce qui connaissent, l'aspect uniquement, malheureusement pas encore les fonctionnalités. Au passage je note que bien des choses ont changé dans Delphi, la gestion des applications MDI semble meilleure par exemple.De toute façon le constat est simple plus je passe du temps sur D6 et plus le progrès me semble essentiel.

En conclusion le vainqueur n'est pas MySQL ni même Interbase, mais bien le développeur lui-même qui a, avec Delphi 6, le meilleur outil de programmation qu'il m'a été donné de voir. Delphi 6 semble bien être un grand cru, les différences entre 2 versions sont parfois ténues, cette fois il s'agit d'un fossé, du fossé de l'évolution:-) Quel développeur n'a pas rêvé d'un code réutilisable d'une plate-forme à l'autre ? C'est parfois possible, mais rarement pour les bases de données, Delphi 6 par le biais de DBExpress nous l'offre, certes des habitudes sont à oublier, d'autres à acquérir, malgré tout le jeu me semble bien en valoir la chandelle



Avril 2001 - Jean Marc Carayon




Page suivante      


Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -