Vous êtes sur la page 1sur 8

ECOLE VEGA IP

Bases de Donnes sous Delphi

Bases de Donnes sous lenvironnement Delphi

Rsum
Ce chapitre est consacr quelques rappels sur les bases de donnes (en particulier les bases de donnes
relationnelles). Par la suite, nous verrons comment dvelopper une application bases de donnes sous
lenvironnement Delphi.
Ce support de cours ne se veut nullement exhaustif. Ce nest quune rfrence de base.

I. DEFINITIONS ELEMENTAIRES
 Bases de donnes : une base de donnes est un ensemble dinformations structures mmorises sur un
support permanent.
 SGBD (Systme de Gestion de Bases de Donnes): un SGBD (en anglais DBMS, Data Base
Management System) est un programme (logiciel) informatique de haut niveau qui permet de crer et
de maintenir une base de donnes. Cest dire :
- dcrire les donnes qui seront stockes,
- manipuler ces donnes (ajouter, modifier, supprimer des informations),
- Consulter les donnes (slectionner, trier, calculer, agrger, etc)
- Dfinir des contraintes d'intgrits sur les donnes (contraintes de domaines, d'existence,etc)
- Dfinir des protections d'accs (mots de passe, autorisations, etc.),
- Rsoudre les problmes d'accs multiples aux donnes (interblocages),
- Prvoir des procdures de reprise en cas d'incident (sauvegardes, journaux, etc).
On distingue trois types de SGBDs : SGBD hirarchique, SGBD rseau, et SGBD relationnel. Dans ce
qui suit dans ce fascicule, nous nous intresserons ce dernier type de SGBD pour plusieurs
raisons parmi lesquelles notamment le fait quils soient les plus utilises actuellement. Parmi les SGBD
relationnels existants sur le march, on peut citer par exemple : Oracle, Paradox, Access, DB2,
Gemstone, Sybase, Informix, DBase, Ingres, etc.
 Alias : Il est possible de dfinir un alias au rpertoire de travail. Cet alias sera utilis ultrieurement
dans le dveloppement de l'application et permettra d'viter d'avoir fournir le chemin absolu du
rpertoire de travail. Par exemple : alias c:\delphi\bdd\
La notion d'alias permet de dvelopper une application complte en s'affranchissant de la configuration
physique de la machine support. Il suffit en effet de configurer l'alias (grce l'utilitaire adquat) pour
prendre en compte un chemin d'accs aux diffrentes tables diffrent (de celui utilis lors de la phase de
conception mais aussi, ventuellement, en cas de dplacement de l'application sur d'autres machines).
 Bases de donnes relationnelles : Les bases de donnes relationnelles grent les donnes selon le
mode, mis au point par E.F. Codd, bas sur l'utilisation du langage SQL (Structured Query Language).
Ce mode spare l'aspect physique des donnes (stockage sur disque) de leur reprsentation logique
(prsentation l'utilisateur). Les donnes apparaissent alors sous forme de tables qui masquent la
complexit des mcanismes d'accs en mmoire. Ce modle libre l'utilisateur de tous les dtails de
stockage et permet un accs purement logique aux donnes.
Chaque table permet de stocker un type particulier de donnes. Une donne stocke constitue un
enregistrement dans la table (= une ligne). Elle peut tre constitue d'un nombre variable d'informations
lmentaires. Chaque information lmentaire constitue un champ de l'enregistrement (= une colonne).
Les besoins actuels ncessitent l'utilisation frquente de dizaines de tables, chacune permettant le
stockage d'une donne structure particulire. Il y a lieu d'viter la redondance des donnes lmentaires
stockes. L'ensemble de tables ainsi constitu s'appelle une base de donnes.

 Cl (key) :
On appelle cl un identifiant permettant de dterminer d'une faon unique un enregistrement dans une
table. Une cl peut tre :
Un des champs de la table si les valeurs qu'il peut prendre sont toutes diffrentes ;
Un ensemble de champs permettant de dfinir un identifiant unique ;
Un champ spcial qui n'est pas une donne proprement dite mais dont on peut tre
certain de l'unicit (identifiant numrique en gnral).
 La cl sert dterminer prcisment un enregistrement. Elle est unique.
Enseignant : N. BOUCHAMA

ECOLE VEGA IP

Bases de Donnes sous Delphi

 Index : un index est une information sur l'ordonnancement des diffrents enregistrements dans une
table (il peut ne pas correspondre l'ordonnancement physique des enregistrements). Il sert raliser
des tris. On peut dfinir plusieurs indexes pour une mme table.
Lorsquun index correspond une cl, on parle dun index primaire. Autrement, on parle dindex
secondaire.
 Requte :
Pour accder aux diffrentes informations l'utilisateur doit excuter diffrentes requtes qui seront
ensuite interprtes par le gestionnaire de base de donnes. Dans le cas d'une base utilise dans le
contexte client / serveur, seule la requte est transmise au serveur. Celui-ci la traite puis renvoie les
rsultats au client.
Une requte est formule selon un langage particulier, qui est d'ailleurs un des fondements des bases de
donnes relationnelles : le langage SQL.
 Vue (view):
Une vue peut tre affiche sous forme de tableau (chaque ligne correspond un enregistrement et les
colonnes correspondent aux champs slectionns) ou sous forme de fiche : un seul enregistrement est
l'cran en mme temps. Lorsqu'une table est trie selon un index secondaire, elle prsente l'utilisateur
une "vue" qui diffre de son implmentation physique.
 Moteur Bases de Donnes (Datase Engine)
Un moteur de base de donnes est un ensemble de programmes chargs de grer les diffrentes donnes
stockes dans les tables (accs aux tables, ajout, modification et suppression d'enregistrement, gestion
des accs concurrents). C'est le coeur d'un SGBDR. Il ne permet pas de crer les tables et n'assure pas
l'interface avec les utilisateurs. Ces fonctionnalits sont ralises par d'autres utilitaires.

II. COMPOSANTS BASES DE DONNEES SOUS DELPHI


Delphi dispose de nombreux composants permettant daccder aux bases de donnes et de les exploiter. Delphi
rpartit ces composants selon les mcanismes daccs aux donnes qui diffrent dune technologie lautre. Sur
la palette des composants, les composants bases de donnes sont regroups dans six pages :







La page BDE (Borland Database Engin) : Cest cette page qui nous intresse le plus. Le modle BDE
reprsent par la page BDE correspond aux composants du moteur daccs BDE qui constitue une
interface fonctionnelle API qui permet de travailler avec les bases de donnes. Le modle BDE est le
meilleur moyen dexploiter une base de donnes Paradox ou des tables dBase.
La page ADO (Activex Data Objects)
La page dbExpress
La page InterBase
La Page AccsBD

La table ci-dessous nous dcrit le rle des composants essentiels :


DataSource
Table

Query

Source de donnes. Agit comme un conduit entre un composant TTable, TQuery


ou TStoredProc et des composants orients donnes, tels que TDBGrid.
Rcupre les donnes d'une table physique, via le BDE, et les fournit un ou plusieurs
composants orients donnes par le biais d'un composant DataSource. Inversement, envoie
les donnes reues d'un composant vers une base de donnes physique, via le BDE.
Utilise des instructions SQL pour rcuprer les donnes d'une table physique, via le BDE,
et les fournir un ou plusieurs composants orients donnes par le biais d'un composant
DataSource. Inversement, utilise des instructions SQL pour envoyer les donnes reues
d'un composant vers une base de donnes physique, via le BDE.

Enseignant : N. BOUCHAMA

ECOLE VEGA IP

Bases de Donnes sous Delphi

La page ContrleBD

La table ci-dessous nous dcrit le rle de chaque composant :


DBGrid

DBNavigator

DBText
DBEdit
DBMemo
DBListBox
DBComboBox
DBCheckBox
DBRadioGroup
DBLookupListBox

Grille de base de donnes. Grille personnalise oriente donnes permettant d'afficher les
donnes sous forme d'un tableau comme dans une feuille de calcul. Possde des proprits
TField (dfinies dans l'diteur de champs) pour dterminer la visibilit d'une colonne, le
format d'affichage, l'ordre, etc.
Navigateur de base de donnes. Boutons de navigation orients permettant de dplacer en
avant ou en arrire le pointeur d'enregistrement dans une table. Le navigateur peut aussi
mettre une table en mode insertion, dition ou consultation seulement, valider des
enregistrements nouveaux ou modifis et rcuprer des donnes mises jour pour
rafrachir l'cran.
Texte de base de donnes. Libell orient donnes qui affiche la valeur d'un champ de
l'enregistrement en cours.
Saisie de base de donnes. Bote de saisie oriente donnes permettant d'afficher et de
modifier un champ de l'enregistrement en cours.
Mmo de base de donnes. Mmo orient donnes permettant d'afficher et de modifier du
texte BLOB de l'enregistrement en cours.
Bote liste de base de donnes. Bote liste oriente donnes qui affiche une liste dfilable
des valeurs d'une colonne d'une table.
Bote options de base de donnes. Bote options oriente donnes qui permet d'afficher
et de modifier une liste dfilable des valeurs d'une colonne d'une table.
Case cocher de base de donnes. Case cocher oriente donnes qui permet d'afficher et
de modifier un champ boolen de l'enregistrement en cours.
Groupe de boutons radio de base de donnes. Groupe de boutons radio orients donnes
qui affichent l'ensemble des valeurs d'une colonne.
Bote liste de rfrences de base de donnes. Bote liste oriente donnes dont les
lments proviennent d'un champ de rfrence dfini pour un ensemble de donnes, ou
d'une source de donnes, d'un champ de donnes et de touches secondaires

Remarque :
Dans le cadre de cette formation, nous nous intresserons surtout au moteur de base de donnes de Borland,
c'est--dire BDE .

Onglet QuickReport
En plus de ces six pages, on trouve galement une autre page dans la palette des composants de Delphi qui nous
permet dafficher les tats de sortie : Page QReport.
Remarque :
Cette page nest pas prsente par dfaut dans Delphi 7. Par consquent il faut linstaller.

Dans cet onglet, on sintresse surtout au composant QuickRep


QuickRep

C'est un composant visuel qui adopte la taille du format de papier slectionn. Vous crez des
tats en plaant des bandes et des composants imprimables sur le composant TQuickRep et en
le connectant un ensemble de donnes.
Enseignant : N. BOUCHAMA

ECOLE VEGA IP

Bases de Donnes sous Delphi

III. ARCHITECTURE INTERNERNE PERMETTANT LACCES AUX DONNEES


Delphi met en place un certain nombre d'utilitaires et de mcanismes internes pour qu'une application ait accs
aux donnes gres par les diffrents SGBDR.
Il fournit en particulier un moteur de base de donnes interne appel BDE (Borland Database Engine), qui
permet de crer et de grer des bases de donnes locales. C'est BDE qui assure par ailleurs la communication
avec les autres bases de donnes.

Figure 1 : Architecture interne dune BDD sous Delphi.


Moteur BDE :
Le moteur de base de donnes Borland BDE (Borland Database Engine ) est l'lment central d'une application
de gestion de base de donnes cre avec Delphi. Il est inclus directement dans les composants spcifiques
fournis avec Delphi. Un programmeur n'a donc pas s'en occuper et il n'apparat pas dans l'arborescence de
l'application cre. Par contre l'excutable gnr est plus important. L'application Delphi cre est
essentiellement constitue d'une l'interface utilisateur permettant d'accder de manire transparente BDE.
Module de Bases de Donnes :
Les structures des diffrentes tables utilises dans l'application sont mises au point par un utilitaire spcial : DBD
(DataBase Desktop).
Cet utilitaire, accessible par une icne spcifique ou par le menu Outils' permet de crer les diffrentes tables de
l'application (dnominations, types et tailles des diffrents champs et dfinition des cls), de dfinir les diffrents
index, de crer les liens entre les diffrentes tables.
SGBDR (SGBD Relationnel) :
Il est possible d'utiliser des tables dj conues par d'autres SGBDR (Paradox ou dBase). Dans notre cas, cest le
SGBDR Paradox que nous utiliserons.

I
Etats de sortie (Reports) :
L'utilitaire Report Smith (ou le composant QReport) permet de gnrer des tats complexes, en mode
WYSIWYG (What You See Is What You Get), partir des tables gres par l'application Delphi.
Pilotes ODBC :
Les pilotes ODBC permettent l'accs diffrentes bases de donnes et serveurs SQL non reconnus directement
par Delphi.

IV. DEVELOPPEMENT DUNE APPLICATION BASES DE DONNEES SOUS


DELPHI
Delphi permet de grer les applications de bases de donnes relationnelles. Les bases de donnes relationnelles
organisent les informations en tables, qui contiennent des lignes (enregistrements) et des colonnes (champs). Ces
tables peuvent tre manipules par des oprations simples appeles calculs relationnels (slection, projection,
jointure). Sous Delphi, on peut dvelopper une base de donnes en suivant les tapes suivantes :
Concevoir le MCD (Modle Conceptuel de Donnes) et effectuer le passage au modle relationnel.
Inutile de rappeler ici que la cohrence et lefficacit de votre base de donnes dpendent de faon trs
troite de votre MCD et du respect des rgles de passage.
Donner un nom notre base de donnes (il est vivement recommand que votre nom de base de
donnes soir significatif. Ex : GestionScolarit est prfrable BDD1 )
Enseignant : N. BOUCHAMA

ECOLE VEGA IP

Bases de Donnes sous Delphi

Cration des alias


Cration des tables en utilisant le module de base de donnes (Voir figure 2 ci-Dessous). Dans cette
tape, on sintresse aux champs de chaque table, leurs tailles, et leurs types (numrique,
alphanumrique, date, etc). On doit galement prciser les indexes (index) et les cls (key).
Une fois notre base de donnes cre, on peut procder au remplissage. On parle alors de phase
dexploitation de la table

V. CREATION DES TABLES EN UTLISANT LE MODULE BASE DE DONNEES

Figure 2 : Module de base de donnes.


Dans ce paragraphe, nous donnons un exemple de cration dune table Etudiant qui contiendra les champs
suivants :

Numro dimmatriculation
Nom
Prnom
Date de naissance
Adresse
Numro de tlphone

La cl de cette table est Numro dimmatriculation. Ceci veut dire


que deux tudiants ne doivent pas avoir le mme numro
dimmatriculation sinon il y aura une violation de cl.

Etape 1 : Lancement du module de base de donnes :


 Pour ce faire, lanons le module base de donnes de Delphi (si vous
utilisez une version anglaise de Delphi alors lancer Data Base Desktop). Ceci peut tre fait soit en choisissant le
module base de donnes dans le groupe de programme Delphi, soit en allant dans le menu Outils/Module base
de donnes
Etape 2 : Cration des alias :
Rappelons quun alias est quivalent un chemin daccs.
Pour crer un nouveau alias, aller dans le menu Outils/Gestionnaire dalias de votre moniteur de base de
donnes.
Cliquer sur le bouton Nouveau
Dans la case Alias de base dfinir votre nouveau alias. Par exemple : AliasStudent
Cliquer sur Parcourir pour associer le chemin daccs correspondant votre alias. Par exemple : C:\Delphi
 Enregistrer votre nouveau alias en cliquant sur le bouton Enregistrer sous.
Etape 3 : Cration de la table :
 Aller sur le menu Fichier/Nouveau/Table
Choisir un pilote de base de donnes. Dans notre cas, choisir Paradox puis cliquer sur OK.
Dfinir les champs de votre table tout en dfinissant le type et la longueur de chaque champ.
Sauvegarder votre table dans lemplacement que vous avez associ votre alias (enregistrer votre table sous le
nom Etudiant.db).

Enseignant : N. BOUCHAMA

ECOLE VEGA IP

Bases de Donnes sous Delphi

Figure 3 : Interface pour crer une nouvelle table.

VI. CREATION DE LAPPLICATION

Figure 4 : Composants Base de donnes sur une fiche Delphi.


Le module Base de Donnes Delphi nous permet de crer les tables contenant les donnes. Il sagit de laspect
statique de votre application. Tandis que pour exploiter ces donnes, on doit utiliser des composant bases de
donnes dont dispose Delphi.
Pour ce faire, crez une nouvelle applications Delphi en allant dans : Fichier/Nouveau/Application
Une fois votre nouvelle application cre, ajouter les composant suivants votre fiche :
TTable : ce composant se trouve dans longlet BDE. Associer le champ DatabaseName au nom de
votre alias, et le champ TableName au nom de votre table (dans notre cas est Etudiant.db). Une fois
ce deux proprits dfinies, dfinir la proprit Active true.
TDatasource : Associer au champ Dataset de ce composant Table1
TDBNavigator : comme son nom lindique, ce composant sert naviguer dans la base de donnes.
Naviguer veut dire : se dplacer dun enregistrement lautre en utilisant les boutons suivants :

Figure 5 : Boutons du composant DBNavigator


Configurer la proprit DataSource de ce composant DataSource1

TDBGrid : ce composant sert afficher le contenu de la table Table1. On peur galement utiliser ce
composant pour modifier directement le contenu de la table. Pour ce faire, configure la proprit
Datasource Datasource1.

Remarques :
Enseignant : N. BOUCHAMA

ECOLE VEGA IP

Bases de Donnes sous Delphi

Lorsque vous voulez dcouvrir les diffrentes mthodes et proprits dun composant Delphi, placez
votre composant sur la fiche et appuyez sur F1 ;
Vous pouvez accder aux diffrentes mthodes et proprits dun composant en en tapant le nom du
composant + point+ (CTRL+ESPACE).
On utilise rarement le navigateur (et une grille) pour raliser des insertions et suppressions de champs.
Il n'y a pas assez de contrles de raliser et l'entre des donnes n'est pas trs pratique et peut gnrer
des erreurs (on prfrera utiliser une fentre spciale contenant l'ensemble des champs de saisie sous
forme de formulaire). On utilise donc principalement le navigateur pour raliser des dplacements
l'intrieur de la base. Il faut donc liminer les boutons inutiles (cas de manipulation dangereuse) et ne
conserver que ceux que l'on souhaite mettre la disposition des utilisateurs. Pour cela on slectionne le
composant Navigateur et on affiche la liste des options accessibles via la proprit VisibleButtons. Il
suffit alors de faire basculer False les boutons que l'on ne veut pas afficher. L'effet est immdiat dans
la fentre de conception et il n'y a plus qu' redimensionner le navigateur.

VII. UTILISATION DE LEXPERT FICHE


Dans ce que nous avons vu prcdemment, les composants base de donnes ont t rajouts manuellement par
un glisser/dplacer sur la fiche. Cependant, il existe un autre moyen plus commode pour visualiser et mettre
jour une base de donnes. Il sagit de lexpert fiche de Delphi.
Pour utiliser cet outil, il faut suivre les tapes suivantes :
 Aller dans Fichier/Nouveau/Autre
Choisir longlet Affaires
Cliquer sur Expert Fiche Base de donnes
Vous pouvez procder par une autre faon :
Aller simplement dans le menu Base de donnes/Expert Fiche de Delphi

Figure 6 : Expert fiche

Par la suite, cet assistant vous guidera pour obtenir une fiche contenant une interface vous permettant dinteragir
avec votre base de donnes.

VIII. MISE JOUR DUNE BASE DE DONNES EN UTLISANT DU CODE


Jusqu maintenant, nous avons vu comment mettre jour une base de donnes en utilisant des composants
visuels (DBNavigator, DBGrid, etc). Il existe un autre moyen pour mettre jour une base de donnes ; savoir :
le code PASCAL.
Numro dimmatriculation
0

Nom
1

Prnom
2

Date de naissance
3

Adresse
4

Numro de tlphone
5

Figure 7 : Numro de chaque champ de la table Etudiant.


Pour accder un champ dun enregistrement donn, on doit connatre la position du champ ainsi que celle de
lenregistrement.
Exemple :
Imaginons que le premier enregistrement est le suivant :
A005

Ait Amar

Hocine 23/06/1982

Ihaddaden, Bjaia

034202020

Enseignant : N. BOUCHAMA

ECOLE VEGA IP

Bases de Donnes sous Delphi

Et supposons quon veuille modifier le nom de cet tudiant Ait Ammar :


Dans ce cas, Il y deux mthodes pour modifier de champs par code
Mthode 1 (en utilisant les indices des champs):
On doit taper le code suivant :

Table1.Edit ; //ouvrir la table en mode dition


Table1.Fields[1].AsString :=Ait Ammar ; // car lindice du champ nom est 1 .
Mthode 2 (en utilisant les noms des champs):
Dans ce cas, on nest pas oblig de savoir lindice du champs mais son nom exact :

Table1.Edit ; //ouvrir la table en mode dition


Table1.FieldByName(Nom) :=Ait Ammar ; //Ici on utilise directement le nom du champ
IX. PROPRIETES DES COMPOSANTS ESSENTIELS :
Dans ce paragraphe, nous donnons quelques proprits de trois composants, savoir : le composant Table, le
composant Datasource, et le composant DBNavigator.

Composant Table
Active
DataBaseName
Fieldefs
Fields [i]
IndexName
MasterSource
Modified
ReadOnly
RecordCount
State
TableName

Composant Datasource
Active
DataSet
State

Indique si la table est ouverte ou non. Le fait de basculer Active True


ouvre la table est et quivalent : Table1.Open
Indique l'alias ou le chemin d'accs la table
Donne des renseignements sur les diffrents champs de la table.
Permet d'accder un champ particulier par son indice (base 0).
Spcifie un index secondaire. Celui-ci doit avoir t dfinit dans DBD.
Utilis dans le cas de tables lies.
Indique si un champ de l'enregistrement courant a t modifi.
Empche l'utilisateur de modifier les donnes si elle est configure true.
Indique le nombre d'enregistrements.
Indique l'tat courant de la table.
Nom de la table avec laquelle le composant est li.

Indique si le composant est actif ou nom.


Indique le composant de gestion de donnes auquel TDataSource est connect.
Indique l'tat du composant de gestion de donne.

Composant DBNavigator
Field [i]
FixedColor
Options
Read Only

Permet d'accder au i champ de la grille


Spcifie la couleur de la grille
Les nombreuses options permettent de modifier l'aspect de la grille
Permet de dterminer si les donnes ne sont qu'affiches ou si l'on peut les modifier

Liens trs recommands:


www.developpez.com
www.commentcamarche.com
www.phidels.com
www.borland.com
www.delphi32.com

Enseignant : N. BOUCHAMA