Vous êtes sur la page 1sur 8

ECOLE VEGA IP

Bases de Données sous Delphi

Bases de Données sous l’environnement Delphi

Résumé Ce chapitre est consacré à quelques rappels sur les bases de données (en particulier les bases de données relationnelles). Par la suite, nous verrons comment développer une application bases de données sous l’environnement Delphi. Ce support de cours ne se veut nullement exhaustif. Ce n’est qu’une référence de base.

I. DEFINITIONS ELEMENTAIRES

Bases de données : une base de données est un ensemble d’informations structurées mémorisées sur un

- décrire les données qui seront stockées,

support permanent. SGBD (Système de Gestion de Bases de Données): un SGBD (en anglais DBMS, Data Base

Management System) est un programme (logiciel) informatique de haut niveau qui permet de créer et de maintenir une base de données. C’est à dire :

- manipuler ces données (ajouter, modifier, supprimer des informations),

- Consulter les données (sélectionner, trier, calculer, agréger, etc)

- Définir des contraintes d'intégrités sur les données (contraintes de domaines, d'existence,etc)

- Définir des protections d'accès (mots de passe, autorisations, etc.),

- Résoudre les problèmes d'accès multiples aux données (interblocages),

- Prévoir des procédures de reprise en cas d'incident (sauvegardes, journaux, etc).

On distingue trois types de SGBDs : SGBD hiérarchique, SGBD réseau, et SGBD relationnel. Dans ce qui suit dans ce fascicule, nous nous intéresserons à ce dernier type de SGBD pour plusieurs raisons parmi lesquelles notamment le fait qu’ils soient les plus utilisées 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 définir un alias au répertoire de travail. Cet alias sera utilisé ultérieurement dans le développement de l'application et permettra d'éviter d'avoir à fournir le chemin absolu du répertoire de travail. Par exemple : alias c:\delphi\bdd\

La notion d'alias permet de développer une application complète en s'affranchissant de la configuration physique de la machine support. Il suffit en effet de configurer l'alias (grâce à l'utilitaire adéquat) pour prendre en compte un chemin d'accès aux différentes tables différent (de celui utilisé lors de la phase de conception mais aussi, éventuellement, en cas de déplacement de l'application sur d'autres machines).

Bases de données relationnelles : Les bases de données relationnelles gèrent les données selon le mode, mis au point par E.F. Codd, basé sur l'utilisation du langage SQL (Structured Query Language). Ce mode sépare l'aspect physique des données (stockage sur disque) de leur représentation logique (présentation à l'utilisateur). Les données apparaissent alors sous forme de tables qui masquent la complexité des mécanismes d'accès en mémoire. Ce modèle libère l'utilisateur de tous les détails de stockage et permet un accès purement logique aux données. Chaque table permet de stocker un type particulier de données. Une donnée stockée constitue un enregistrement dans la table (= une ligne). Elle peut être constituée d'un nombre variable d'informations élémentaires. Chaque information élémentaire constitue un champ de l'enregistrement (= une colonne). Les besoins actuels nécessitent l'utilisation fréquente de dizaines de tables, chacune permettant le stockage d'une donnée structurée particulière. Il y a lieu d'éviter la redondance des données élémentaires stockées. L'ensemble de tables ainsi constitué s'appelle une base de données.

Clé (key) :

On appelle clé un identifiant permettant de déterminer d'une façon 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 différentes ;

Un ensemble de champs permettant de définir un identifiant unique ;

Un champ spécial qui n'est pas une donnée proprement dite mais dont on peut être certain de l'unicité (identifiant numérique en général).

La clé sert à déterminer précisément un enregistrement. Elle est unique.

ECOLE VEGA IP

Bases de Données sous Delphi

Index : un index est une information sur l'ordonnancement des différents enregistrements dans une table (il peut ne pas correspondre à l'ordonnancement physique des enregistrements). Il sert à réaliser des tris. On peut définir plusieurs indexes pour une même table. Lorsqu’un index correspond à une clé, on parle d’un index primaire. Autrement, on parle d’index secondaire.

Requête :

Pour accéder aux différentes informations l'utilisateur doit exécuter différentes requêtes qui seront ensuite interprétées par le gestionnaire de base de données. Dans le cas d'une base utilisée dans le contexte client / serveur, seule la requête est transmise au serveur. Celui-ci la traite puis renvoie les résultats au client. Une requête est formulée selon un langage particulier, qui est d'ailleurs un des fondements des bases de données relationnelles : le langage SQL.

Vue (view):

Une vue peut être affichée sous forme de tableau (chaque ligne correspond à un enregistrement et les colonnes correspondent aux champs sélectionnés) ou sous forme de fiche : un seul enregistrement est à l'écran en même temps. Lorsqu'une table est triée selon un index secondaire, elle présente à l'utilisateur une "vue" qui diffère de son implémentation physique.

Moteur Bases de Données (Datase Engine) Un moteur de base de données est un ensemble de programmes chargés de gérer les différentes données stockées dans les tables (accès aux tables, ajout, modification et suppression d'enregistrement, gestion des accès concurrents). C'est le coeur d'un SGBDR. Il ne permet pas de créer les tables et n'assure pas l'interface avec les utilisateurs. Ces fonctionnalités sont réalisées par d'autres utilitaires.

II. COMPOSANTS BASES DE DONNEES SOUS DELPHI

Delphi dispose de nombreux composants permettant d’accéder aux bases de données et de les exploiter. Delphi répartit ces composants selon les mécanismes d’accès aux données qui diffèrent d’une technologie à l’autre. Sur la palette des composants, les composants bases de données sont regroupés dans six pages :

La page BDE (Borland Database Engin) : C’est cette page qui nous intéresse le plus. Le modèle BDE

représenté par la page BDE correspond aux composants du moteur d’accès BDE qui constitue une interface fonctionnelle API qui permet de travailler avec les bases de données. Le modèle BDE est le meilleur moyen d’exploiter une base de données Paradox ou des tables dBase. La page ADO (Activex Data Objects)

La page dbExpress

La page InterBase

La Page AccèsBD

La page dbExpress La page InterBase La Page AccèsBD La table ci-dessous nous décrit le rôle

La table ci-dessous nous décrit le rôle des composants essentiels :

DataSource

Source de données. Agit comme un conduit entre un composant TTable, TQuery ou TStoredProc et des composants orientés données, tels que TDBGrid.

Table

Récupère les données d'une table physique, via le BDE, et les fournit à un ou plusieurs composants orientés données par le biais d'un composant DataSource. Inversement, envoie les données reçues d'un composant vers une base de données physique, via le BDE.

Query

Utilise des instructions SQL pour récupérer les données d'une table physique, via le BDE, et les fournir à un ou plusieurs composants orientés données par le biais d'un composant DataSource. Inversement, utilise des instructions SQL pour envoyer les données reçues d'un composant vers une base de données physique, via le BDE.

ECOLE VEGA IP

Bases de Données sous Delphi

La page ContrôleBD

VEGA IP Bases de Données sous Delphi La page ContrôleBD La table ci-dessous nous décrit le

La table ci-dessous nous décrit le rôle de chaque composant :

DBGrid

Grille de base de données. Grille personnalisée orientée données permettant d'afficher les données sous forme d'un tableau comme dans une feuille de calcul. Possède des propriétés TField (définies dans l'éditeur de champs) pour déterminer la visibilité d'une colonne, le format d'affichage, l'ordre, etc.

DBNavigator

Navigateur de base de données. Boutons de navigation orientés permettant de déplacer en avant ou en arrière 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 modifiés et récupérer des données mises à jour pour rafraîchir l'écran.

DBText

Texte de base de données. Libellé orienté données qui affiche la valeur d'un champ de l'enregistrement en cours.

DBEdit

Saisie de base de données. Boîte de saisie orientée données permettant d'afficher et de modifier un champ de l'enregistrement en cours.

DBMemo

Mémo de base de données. Mémo orienté données permettant d'afficher et de modifier du texte BLOB de l'enregistrement en cours.

DBListBox

Boîte liste de base de données. Boîte liste orientée données qui affiche une liste défilable des valeurs d'une colonne d'une table.

DBComboBox

Boîte à options de base de données. Boîte à options orientée données qui permet d'afficher et de modifier une liste défilable des valeurs d'une colonne d'une table.

DBCheckBox

Case à cocher de base de données. Case à cocher orientée données qui permet d'afficher et de modifier un champ booléen de l'enregistrement en cours.

DBRadioGroup

Groupe de boutons radio de base de données. Groupe de boutons radio orientés données qui affichent l'ensemble des valeurs d'une colonne.

DBLookupListBox

Boîte liste de références de base de données. Boîte liste orientée données dont les éléments proviennent d'un champ de référence défini pour un ensemble de données, ou d'une source de données, d'un champ de données et de touches secondaires

Remarque :

Dans le cadre de cette formation, nous nous intéresserons surtout au moteur de base de données 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 d’afficher les états de sortie : Page QReport.

Remarque :

Cette page n’est pas présente par défaut dans Delphi 7. Par conséquent il faut l’installer.

dans Delphi 7. Par conséquent il faut l’installer. Dans cet onglet, on s’intéresse surtout au composant

Dans cet onglet, on s’intéresse surtout au composant QuickRep

QuickRep

C'est un composant visuel qui adopte la taille du format de papier sélectionné. Vous créez des états en plaçant des bandes et des composants imprimables sur le composant TQuickRep et en le connectant à un ensemble de données.

ECOLE VEGA IP

Bases de Données sous Delphi

III. ARCHITECTURE INTERNERNE PERMETTANT L’ACCES AUX DONNEES

Delphi met en place un certain nombre d'utilitaires et de mécanismes internes pour qu'une application ait accès aux données gérées par les différents SGBDR. Il fournit en particulier un moteur de base de données interne appelé BDE (Borland Database Engine), qui permet de créer et de gérer des bases de données locales. C'est BDE qui assure par ailleurs la communication avec les autres bases de données.

ailleurs la communication avec les autres bases de données. Figure 1 : Architecture interne d’une BDD

Figure 1 : Architecture interne d’une BDD sous Delphi.

Moteur BDE :

Le moteur de base de données Borland BDE (Borland Database Engine ) est l'élément central d'une application de gestion de base de données créée avec Delphi. Il est inclus directement dans les composants spécifiques fournis avec Delphi. Un programmeur n'a donc pas à s'en occuper et il n'apparaît pas dans l'arborescence de l'application créée. Par contre l'exécutable généré est plus important. L'application Delphi créée est essentiellement constituée d'une l'interface utilisateur permettant d'accéder de manière transparente à BDE.

Module de Bases de Données :

Les structures des différentes tables utilisées dans l'application sont mises au point par un utilitaire spécial : DBD (DataBase Desktop). Cet utilitaire, accessible par une icône spécifique ou par le menu Outils' permet de créer les différentes tables de l'application (dénominations, types et tailles des différents champs et définition des clés), de définir les différents index, de créer les liens entre les différentes tables.

SGBDR (SGBD Relationnel) :

Il est possible d'utiliser des tables déjà conçues par d'autres SGBDR (Paradox ou dBase). Dans notre cas, c’est le SGBDR Paradox que nous utiliserons.

I

Etats de sortie (Reports) :

L'utilitaire Report Smith (ou le composant QReport) permet de générer des états complexes, en mode WYSIWYG (What You See Is What You Get), à partir des tables gérées par l'application Delphi.

Pilotes ODBC :

Les pilotes ODBC permettent l'accès à différentes bases de données et serveurs SQL non reconnus directement par Delphi.

IV.

DELPHI

DEVELOPPEMENT

D’UNE

APPLICATION

BASES

DE

DONNEES

SOUS

Delphi permet de gérer les applications de bases de données relationnelles. Les bases de données relationnelles organisent les informations en tables, qui contiennent des lignes (enregistrements) et des colonnes (champs). Ces tables peuvent être manipulées par des opérations simples appelées calculs relationnels (sélection, projection, jointure). Sous Delphi, on peut développer une base de données en suivant les étapes suivantes :

Concevoir le MCD (Modèle Conceptuel de Données) et effectuer le passage au modèle relationnel. Inutile de rappeler ici que la cohérence et l’efficacité de votre base de données dépendent de façon très étroite de votre MCD et du respect des règles de passage.une base de données en suivant les étapes suivantes : Donner un nom à notre base

Donner un nom à notre base de données (il est vivement recommandé que votre nom de base de données soir significatif. Ex : GestionScolarité est préférable à BDD1 ) Ex : GestionScolarité est préférable à BDD1 )

ECOLE VEGA IP

Bases de Données sous Delphi

Création des aliasECOLE VEGA IP Bases de Données sous Delphi Création des tables en utilisant le module de

Création des tables en utilisant le module de base de données (Voir figure 2 ci-Dessous). Dans cette étape, on s’intéresse aux champs de chaque table, à leurs tailles, et à leurs types (numérique, alphanumérique, date, etc). On doit également préciser les indexes (index ) et les clés ( key ). index) et les clés (key).

Une fois notre base de données créée, on peut procéder au remplissage. On parle alors de phase d’exploitation de la table exploitation de la table

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

V. CREATION DES TABLES EN UTLISANT LE MODULE BASE DE DONNEES Figure 2 : Module de

Figure 2 : Module de base de données.

Dans ce paragraphe, nous donnons un exemple de création d’une table Etudiant qui contiendra les champs suivants :

Numéro d’immatriculation

Nom

Prénom

Date de naissance

Adresse

Numéro de téléphone

La clé de cette table est Numéro d’immatriculation. Ceci veut dire que deux étudiants ne doivent pas avoir le même numéro d’immatriculation sinon il y aura une violation de clé.

d’immatriculation sinon il y aura une violation de clé . Etape 1 : Lancement du module

Etape 1 : Lancement du module de base de données :

Pour ce faire, lançons le module base de données 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 données dans le groupe de programme Delphi, soit en allant dans le menu Outils/Module base de données

Etape 2 : Création des alias :

Rappelons qu’un alias est équivalent à un chemin d’accès. Pour créer un nouveau alias, aller dans le menu Outils/Gestionnaire d’alias de votre moniteur de base de données. Cliquer sur le bouton Nouveau Dans la case Alias de base définir votre nouveau alias. Par exemple : AliasStudent Cliquer sur Parcourir pour associer le chemin d’accès correspondant à votre alias. Par exemple : C:\Delphi Enregistrer votre nouveau alias en cliquant sur le bouton Enregistrer sous.

Etape 3 : Création de la table :

Aller sur le menu Fichier/Nouveau/Table Choisir un pilote de base de données. Dans notre cas, choisir Paradox puis cliquer sur OK. Définir les champs de votre table tout en définissant le type et la longueur de chaque champ. Sauvegarder votre table dans l’emplacement que vous avez associé à votre alias (enregistrer votre table sous le nom Etudiant.db).

ECOLE VEGA IP

Bases de Données sous Delphi

ECOLE VEGA IP Bases de Données sous Delphi Figure 3 : Interface pour créer une nouvelle

Figure 3 : Interface pour créer une nouvelle table.

VI. CREATION DE L’APPLICATION

créer une nouvelle table. VI. CREATION DE L’APPLICATION Figure 4 : Composants Base de données sur

Figure 4 : Composants Base de données sur une fiche Delphi.

Le module Base de Données Delphi nous permet de créer les tables contenant les données. Il s’agit de l’aspect statique de votre application. Tandis que pour exploiter ces données, on doit utiliser des composant bases de données dont dispose Delphi. Pour ce faire, créez une nouvelle applications Delphi en allant dans : Fichier/Nouveau/Application Une fois votre nouvelle application créée, ajouter les composant suivants à votre fiche :

TTable : ce composant se trouve dans l’onglet 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 propriétés définies, définir la propriété Active à true.

TDatasource : Associer au champ Dataset de ce composant Table1

TDBNavigator : comme son nom l’indique, ce composant sert à naviguer dans la base de données. Naviguer veut dire : se déplacer d’un enregistrement à l’autre en utilisant les boutons suivants :

à l’autre en utilisant les boutons suivants : Figure 5 : Boutons du composant DBNavigator Configurer

Figure 5 : Boutons du composant DBNavigator

Configurer la propriété 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 propriété Datasource à Datasource1.

Remarques :

ECOLE VEGA IP

Bases de Données sous Delphi

Lorsque vous voulez découvrir les différentes méthodes et propriétés d’un composant Delphi, placez votre composant sur la fiche et appuyez sur F1 ;

Vous pouvez accéder aux différentes méthodes et propriétés d’un composant en en tapant le nom du composant + point+ (CTRL+ESPACE).

On utilise rarement le navigateur (et une grille) pour réaliser des insertions et suppressions de champs. Il n'y a pas assez de contrôles de réaliser et l'entrée des données n'est pas très pratique et peut générer des erreurs (on préférera utiliser une fenêtre spéciale contenant l'ensemble des champs de saisie sous forme de formulaire). On utilise donc principalement le navigateur pour réaliser des déplacements à l'intérieur 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 sélectionne le composant Navigateur et on affiche la liste des options accessibles via la propriété VisibleButtons. Il suffit alors de faire basculer à False les boutons que l'on ne veut pas afficher. L'effet est immédiat dans la fenêtre de conception et il n'y a plus qu'à redimensionner le navigateur.

VII. UTILISATION DE L’EXPERT FICHE

Dans ce que nous avons vu précédemment, les composants base de données ont été rajoutés manuellement par un glisser/déplacer sur la fiche. Cependant, il existe un autre moyen plus commode pour visualiser et mettre à jour une base de données. Il s’agit de l’expert fiche de Delphi. Pour utiliser cet outil, il faut suivre les étapes suivantes :

Aller dans Fichier/Nouveau/Autre Choisir l’onglet Affaires Cliquer sur Expert Fiche Base de données Vous pouvez procéder par une autre façon :

Aller simplement dans le menu Base de données/Expert Fiche de Delphi

dans le menu Base de données/Expert Fiche de Delphi Figure 6 : Expert fiche Par la
dans le menu Base de données/Expert Fiche de Delphi Figure 6 : Expert fiche Par la

Figure 6 : Expert fiche

Par la suite, cet assistant vous guidera pour obtenir une fiche contenant une interface vous permettant d’interagir avec votre base de données.

VIII. MISE À JOUR D’UNE BASE DE DONNES EN UTLISANT DU CODE

Jusqu’à maintenant, nous avons vu comment mettre à jour une base de données en utilisant des composants visuels (DBNavigator, DBGrid, etc). Il existe un autre moyen pour mettre à jour une base de données ; à savoir :

le code PASCAL.

Numéro d’immatriculation

Nom

Prénom

Date de naissance

Adresse

Numéro de téléphone

0

1

2

3

4

5

Figure 7 : Numéro de chaque champ de la table Etudiant.

Pour accéder à un champ d’un enregistrement donné, on doit connaître la position du champ ainsi que celle de l’enregistrement.

Exemple :

Imaginons que le premier enregistrement est le suivant :

A005

Ait Amar

Hocine 23/06/1982

Ihaddaden, Béjaia

034202020

ECOLE VEGA IP

Bases de Données sous Delphi

Et supposons qu’on veuille modifier le nom de cet étudiant à Ait Ammar :

Dans ce cas, Il y deux méthodes pour modifier de champs par code

Méthode 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 l’indice du champ nom est 1 .

Méthode 2 (en utilisant les noms des champs):

Dans ce cas, on n’est pas obligé de savoir l’indice 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 propriétés de trois composants, à savoir : le composant Table, le composant Datasource, et le composant DBNavigator.

Composant Table

Active

Indique si la table est ouverte ou non. Le fait de basculer Active à True ouvre la table est et équivalent à : Table1.Open

DataBaseName

Indique l'alias ou le chemin d'accès à la table

Fieldefs

Donne des renseignements sur les différents champs de la table.

Fields [i]

Permet d'accéder à un champ particulier par son indice (base 0).

IndexName

Spécifie un index secondaire. Celui-ci doit avoir été définit dans DBD.

MasterSource

Utilisé dans le cas de tables liées.

Modified

Indique si un champ de l'enregistrement courant a été modifié.

ReadOnly

Empêche l'utilisateur de modifier les données si elle est configurée à true.

RecordCount

Indique le nombre d'enregistrements.

State

Indique l'état courant de la table.

TableName

Nom de la table avec laquelle le composant est lié.

Composant Datasource

Active

Indique si le composant est actif ou nom.

DataSet

Indique le composant de gestion de données auquel TDataSource est connecté.

State

Indique l'état du composant de gestion de donnée.

Composant DBNavigator

Field [i]

Permet d'accéder au i° champ de la grille

FixedColor

Spécifie la couleur de la grille

Options

Les nombreuses options permettent de modifier l'aspect de la grille

Read Only

Permet de déterminer si les données ne sont qu'affichées ou si l'on peut les modifier

Liens très recommandés:

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

www.delphi32.com