TP Mysql avec Lazarus - page 1
Accès à une base de données MySql via Lazarus
Première partie : exécution de requêtes
Auteur: E. Thirion - dernière mise à jour : 10/07/2015
Corrigé
Le corrigé de ce TP se trouve dans le dossier Corrige-ProgBD/TPMysqlLazarus1, accessible par
téléchargement.
Liens utiles
Voir le cours associé à ces exercices
Installation des dossiers et logiciels nécessaires .
Conditions d'accès au téléchargement .
Voir tous les cours du même auteur .
Ce TP (ou tutoriel si vous préférez) vous enseignera comment réaliser un projet Lazarus utilisant une base
de données MySQL. Nous utilisons toujours la base de données BDVol comme exemple. Il est donc
préférable de la regénérer à partir des liens Suppr BDVols et Créer BDVols du cours. D'autre part, le
serveur de base de donnée doit évidement fonctionner. N'oubliez donc pas de lancer Wamp avant
d'exécuter votre programme.
Le projet est à réaliser de A à Z, interface graphique comprise, dans le répertoire:
Exo-ProgBD/TPMysqlLazarus1
Vous constaterez que ce répertoire contient déjà un fichier libmySQL.dll. Il s'agit d'une dll qui est
indispensable pour la communication entre Lazarus et le serveur Mysql.
TP Mysql avec Lazarus - page 2
L'exécution de requête depuis un projet Lazarus se fait en utilisant des composants (ou classes)
spécialisées.
I - Mise en place des composants invisibles
Commencez par déposer les composants suivants sur votre formulaire:
Le composant Datasource se trouve dans l'onglet DataAccess. Vous trouverez les trois autres sous l'onglet
onglet SQLdb. Ces quatre composants doivent être liés de la manière suivante, en utilisant l'éditeur de
propriétés :
Le composant MySql51Connection contient les informations de connexion à la base de données: nom de
la base de données (propriété DatabaseName), URL du serveur (propriété Hostname), nom de l'utilisateur
(propriété UserName) et mot de passe (propriété Password). Dans ce TP, nous souhaitons nous connecter
à la base BDVols avec le serveur Mysql s'exécutant en local sur votre machine. Il faudra donc donner les
valeurs suivantes à ces propriétés :
Propriété Valeur
DatabaseName bdvols
Hostname localhost
UserName root
Password
TP Mysql avec Lazarus - page 3
Le composant SQLQuery est une classe qui permet d'exécuter des requêtes, par l'application des méthodes
Open ou ExecSQL.
ExecSQL peut s'utiliser avec n'importe quel type de requête. Open, par contre ne peut s'utiliser qu'avec une
requête SELECT.
La méthode Open charge en mémoire une représentation de la table retournée par la requête SELECT. A
cette représentation est associé un curseur qui pointe à tout moment sur une ligne de la table.
II - Mise en place des composants visibles
Nous allons à présent mettre en place deux composants graphiques extrèmement puissants: DBGrid et
DBNavigator. En effet, nous allons voir que ces deux composants vont nous permettre d'afficher une table
et de la modifier en n'écrivant quasiment aucune instruction !
DBGrid permet d'afficher la table résultat d'une requête SELECT quelconque. On précise quelles colonnes
de cette table on souhaite afficher et comment elles doivent apparaitre à l'écran. Les colonnes peuvent être
des colonnes existantes dans la base de données ou des colonnes calculées.
DBNavigator quand à lui permet de modifier une table de la base de donnée. Il doit être utilisé avec un
DBGrid afin que l'utilisateur puisse facilement indiquer quelle ligne il souhaite modifier. Cela ne fonctionne
que dans un cas particulier: la requête SELECT associée au DBGrid doit dans ce cas utiliser une seule
table et la (ou les) colonne(s) constituant la clé primaire doivent être affichées.
Ces deux composants se trouvent sous l'onglet DataControls qui regroupe tous les composants graphiques
spécialisés dans l'accès aux bases de données.
Commencez par ajouter un composant DBGrid et un composant DBNavigator à votre formulaire, en les
reliant au composant DataSource de la manière suivante:
TP Mysql avec Lazarus - page 4
Définition des colonnes du DBGrid
Le composant DBGrid va nous servir à afficher la table Vols de la base de données. Pour cela il va falloir
définir quelles colonnes nous souhaitons afficher et comment nous souhaitons les afficher.
Sélectionnez le DBgrid, puis sur cliquez les ... de la propriété Columns. Cela ouvre l'éditeur de colonne:
Cliquez sur Ajouter. Vous obtenez une première colonne sans nom. Il faut maintenant lui donner un titre et
l'associer à une colonne de la table. Pour cela mettez le nom de la colonne dans la propriété Fieldname et
son titre dans la propriété Title.
Vous introduirez de cette manière les colonnes suivantes (toutes les colonnes de la table Vols) en procédant
de gauche à droite:
Titre Numéro Date Jour Avion Horaire
Colonne NumeroV Jour JourSem Avion Horaire
Notez bien la différence entre le nom de la colonne (propriété FieldName) et son titre (propriété Title). La
première prorpiété est le nom exact de la colonne dans la base de donnée, alors que la seconde est le nom
visible de la colonne (c'est à dire celui qui sera affiché dans l'interface graphique).
Après avoir défini les cinq colonnes de la table Vols, votre éditeur de colonne devrait ressembler à ceci :
et votre interface graphique devrait ressembler à ceci :
TP Mysql avec Lazarus - page 5
III - Affichage de la table des vols dans le DBGrid
A présent, nous allons écrire un peu de code dans la procédure FormCreate. Ce code s'exécutera donc dès
le démarrage du programme. Le voici :
procedure TForm1.FormCreate(Sender: TObject);
begin
// Tentative de connexion à la base de données BDVols
MySQL51Connection1.Open;
if Not MySQL51Connection1.Connected then
begin
ShowMessage ('Connexion échouée !'); exit;
end;
// Affichage de la table Vols dans le DBGrid
SQLQuery1.SQL.Text:= 'SELECT * FROM Vols';
SQLQuery1.Open;
end;
L'instruction MySQL51Connection1.Open; effectue la connexion au serveur de base de données. Si la
connexion échoue ( MySQL51Connection1.Connected = false) le message 'Connexion échouée' est
affiché.
Les instructions suivantes font indirectement le lien entre la table Vols et le DBGrid. La requête "SELECT *
FROM Vols" retourne la table Vols. Pour pouvoir exécuter une requête, il faut d'abord la stocker dans
l'attribut SQL.Text d'un composant SQLQuery. D'où l'instruction:
SQLQuery1.SQL.Text:= 'SELECT * FROM Vols';
L'instruction suivante ( c'est à dire SQLQuery1.Open) envoi la table résultat en mémoire dans le composant
SQLQuery1, ce qui provoque automatiquement son affichage dans le DBGrid.
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !