0% ont trouvé ce document utile (0 vote)
11 vues6 pages

DbExpress avec MySQL sous Delphi

Transféré par

Lamia Bouaita
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues6 pages

DbExpress avec MySQL sous Delphi

Transféré par

Lamia Bouaita
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

Utilisation des composants

DbExpress pour lire une base


MySQL (D6 et plus).
Retour au sommaire

Introduction :

Bon, j'ai pas mal galéré pour réussir à faire quelque chose qui
donne satisfaction. Les composants DBExpress sont relativement
nouveaux pour moi. L'aide n'est pas très explicite et je n'ai rien
trouvé de satisfaisant sur le net. Bref, pas mal de tâtonnements. Il
faut donc considérer ce tutorial comme étant en BétaTest. Je suis
preneur de toutes les observations. Je m'interroge en particulier
sur 2 trucs (voir en fin de cette page).

Depuis la version 6 (pro et +), Borland a introduit des composants


DbExpress. Ces composants permettent entre autres d'attaquer
des bases MySQL.

Le site [Link] étant entièrement basé sur du PHP +


MySQL, j'ai voulu tester la chose.

Pré-requis :

 Avoir une version de Delphi qui possède les composants


DbExpress (D6 pro et +)
 Avoir MySQL installé sur votre poste. Personnellement, je
l'avais installé via le "pack" EasyPHP (gratuit)
sur [Link] Pour télécharger uniquement
MySQL : [Link]
 Avoir créé une base de données qui vous servira de support
à l'exemple suivant.
Personnellement, pour ce genre de manip, j'utilise
phpMyAdmin livré avec EasyPHP.
Lecture d'une base MySQL existante :
Connexion à la base :

Comme d'habitude, on va construire un exemple.

 Ouvrez Delphi, commencez un nouveau projet.


 Allez, on va prendre de bonnes habitudes, on va ouvrir un
DataModule. (Fichier, Nouveau, Module de données).
 Sur ce Module de données, placez un composant

SQLConnection.
Dans la "vue arborescente des objets", on voit notre
SQLConnection mais avec un point d'interrogation devant.
Normal, il n'est pour l'instant connecté à aucune base.

 Vérifiez que votre votre serveur MySQL est lancé.

 Double cliquez sur votre SQLConnection

 Cliquez sur pour créer une nouvelle connexion


 Donnez MYSQL comme nom de pilote. Choisissez un nom
pour votre connexion (ici : testmysql)

 Dans le champ Database, placez le nom de votre base de


donnée (ici MaBaseMySQL). Il faut se rappeler que le nom
d'une base de données en MySQL est en réalité le nom du
dossier dans lequel sont placés ses fichiers.
 Dans le champ HostName, entrez le nom réseau de l'ordi qui
contient la base. Si c'est l'ordi sur lequel tourne le
programme, vous pouvez mettre localhost comme nom.
 Effacez la valeur qui se trouve dans le champ LocaleCode. (à
noter qu'un lecteur m'a fait la remarque suivante : Sans mettre un
nom de user, la manip plante, alors qu'en mettant simplement le user à root, la connexion se
fait. Chez moi, pas besoin...

 Cliquez sur afin de tester la connexion. Vous devez

obtenir :
 A noter que le point d'interrogation a

disparu et que Delphi a rempli pour vous,


entre autres, les champs ConnectionName, DriverName... de
votre SQLConnection.
 Si vous n'en avez pas besoin et si vous ne souhaitez pas voir
s'afficher la boite de dialogue demandant l'utilisateur et le
mot de passe, mettrez à False sa propriété LoginPrompt.
Connection d'un ensemble de données (DataSet) à l'aide
d'un SQLClientDataSet

Placez un SQLClientDataSet sur le DataModule

 Indiquez-lui, via sa propriété DBConnection, qu'il doit utiliser


votre SQLConnection pour se connecter à la
base .
 Placez un SELECT dans la propriété CommandText du
SQLClientDataSet. Par exemple : SELECT * FROM unetable
où unetable est une table de votre base.

Accéder aux données.

Là, on en est à un stade déjà vu dans les autres tutoriaux BDD :

 Placez un DataSource sur notre dataModule et le connecter à


notre SQLClientDataSet via sa propriété
DataSet.

Actuellement, le diagramme de nos connexions correspond à

ceci :

 Sur votre fiche (Form1) placez un DBGrid et un DBNavigator.


 Dans le uses de la form1, ajoutez le nom de l'unit
corespondant à votre DataModule2 (Unit2 si vous n'avez rien
renommé)
 Dans la propriété DataSource du DBNavigator, sélectionez
votre DataSource.
 Dans la propriété DataSource du DBGrid, sélectionez votre
DataSource.
Testez.

Vérifiez que la propriété Connected de votre SQLConnection est à


True. Placez la propriété Active de votre SQLDataSet à True. Vous
devez voir vos DBEdit se remplir.
i vous avez un message d'erreur du

style , vérifiez la clef LocaleCode


en double cliquant sur le SQLConnection (l'effacer). Vérifiez
également la valeur de LocaleCode dans la propriété Params du
SQLConnection (l'effacer).

 Pour être plus propre, et prendre de bonnes habitudes,


remettez Connected du SQLConnection à False. Cela fait
également passer la propriété Active du SQLDataSet à False.
 Dans l'événement OnShow de la fiche Form1, placez le code
suivant :

procedure [Link](Sender: TObject);


begin
[Link]:=True;
[Link]:=True;
end;

Rendre les données modifiables.

Actuellement, si vous modifiez une donnée dans votre DBGrid,


vous aurez beau cliquer sur le V (validation) du DBNavigate,
lorsque vous fermez le programme et que vous l'ouvrez de
nouveau, vous voyez que vos modifications n'ont pas été écrites
dans la base.

Ajoutez un bouton sur votre fiche. Implémentez son événement OnClick comme suit :

procedure TForm1.Button1Click(Sender: TObject);


var MaxErrors:integer;
begin
MaxErrors:=1;
{extrait de l'aide : MaxErrors indique le nombre maximum d'erreurs
tolérées
par le fournisseur avant d'interrompre l'opération d'actualisation.
Initialisez MaxErrors à –1 pour indiquer qu'il n'y a pas de limite
au nombre d'erreurs.}
{Pour MySQL, à ce que l'on m'a dit, MySQL ne tolère qu'une seule erreur.}
[Link](MaxErrors);
end;

En cliquant sur le bouton, les éléments modifiés iront vers la base


de données.

Nota :

Dans cette configuration, si vous voulez ajouter un DBEdit ou


autres DBMemo sur votre fiche, pour le connecter, il faudra,
comme pour le DBGrid, sélectionner le datasource pour sa
propriété DataSource. Il faudra aussi sélectionner le champ que
vous voulez voir, et ce via sa propriété DataField.
Attention, vous ne pourez voir les champs sélectionnables dans la
liste de choix et donc vous ne pourrez sélectionner ce champ que
si le [Link] est à true et le
[Link] est à true (les modifier dans l'inspecteur
d'objet. Une fois la manip faite, les remettre à False.)

Questions a qui a une réponse... :

Je l'ai dit au départ, il faut donc considérer ce tutorial comme


étant en BétaTest. Je suis preneur de toutes les observations. Je
m'interroge en particulier sur 2 trucs :

 Pourquoi, dans le DBNavigator, lorsque l'on clique sur , on


a un message d'erreur :

 A quoi sert exactement la clef LocalCode ?

Vous aimerez peut-être aussi