18
Connectivité aux bases
de données Java (JDBC)
Objectifs
Comprendre les bases de données relationnelles.
Utiliser les classes et les interfaces du package
java.sql
pour interroger, insérer et mettre à jour une base de
données.
Comprendre la formation des requêtes de base
au moyen du langage SQL (Structured Query Language).
C
HAPITRE
18 C
ONNECTIVITÉ
AUX
BASES
DE
DONNÉES
J
AVA
(JDBC) 887
Aperçu
18.1 Introduction
18.2 Systèmes de base de données
18.2.1 Avantages des systèmes de bases de données
18.2.2 Indépendance des données
18.2.3 Langages de bases de données
18.2.4 Base de données répartie
18.3 Modèle de base de données relationnelle
18.4 Aperçu des bases de données relationnelles: la base de données
Livres.mdb
18.5 Langage de requête structuré (SQL)
18.5.1 Requête de base SELECT
18.5.2 Clause WHERE
18.5.3 Clause ORDER BY
18.5.4 Utilisation de INNER JOIN pour fusionner des données en provenance de
plusieurs tables
18.5.5 Requête
TitreAuteur
de
Livres.mdb
18.6 Un premier exemple
18.6.1 Enregistrer
Livres.mdb
en tant que source de données ODBC
18.6.2 Interroger la base de données
Livres.mdb
18.7 Lire, insérer et mettre à jour une base de données Microsoft Access
18.8 Gestion de transactions
Résumé • Terminologie • Erreurs de programmation courantes • Bonne pratique de programmation •
Astuce sur la performance • Astuces sur la portabilité • Observations de génie logiciel • Exercices de
révision • Réponses aux exercices de révision • Exercices • Bibliographie
18.1 Introduction
Au chapitre 17, nous avons discuté du traitement des fichiers à accès séquentiel et à accès direct. Le
traitement de fichiers séquentiels convient bien aux applications qui doivent traiter la presque totalité des
informations d’un fichier. Par contre, le traitement des fichiers à accès direct est idéal pour les applications
qui doivent retrouver et mettre à jour rapidement un élément de donnée précis (c’est particulièrement le
cas de la gestion des transactions) et qui ne s’intéressent qu’à une petite partie du fichier à la fois. Java
possède de puissantes fonctionnalités pour le traitement de ces deux types de fichier.
L’un des problèmes qui touchent ces deux types de traitement tient à ce qu’ils ne font que
récupérer les données et n’offrent aucune fonction pour interroger efficacement les données. Les
systèmes de base de données non seulement assurent le traitement des fichiers, mais en plus
organisent les données de manière à faciliter l’obtention des résultats d’une requête complexe. Les
bases de données les plus courantes dans les ordinateurs qui utilisent Java sont les
bases de données
relationnelles
. Ces dernières années, les bases de données objets ont fait d’étonnantes perçées. Un
langage appelé
langage de requête structuré
(
SQL
) est employé dans presque tous les systèmes de
base de données pour construire des requêtes (demande d’informations qui satisfait un certain
critère). Java permet aux programmeurs d’écrire du code qui met en œuvre les requêtes SQL pour
retrouver des renseignements dans des bases de données relationnelles. Parmi les logiciels de base
de données relationnels les plus connus, mentionnons Microsoft Access, Sybase, Oracle, Informix
888 C
ONNECTIVITÉ
AUX
BASES
DE
DONNÉES
J
AVA
(JDBC) C
HAPITRE
18
et Microsoft SQL Server. Le présent chapitre vous initie à
l’API JDBC (connectivité aux bases de
données Java)
et vous montre comment travailler avec une base de données Microsoft Access.
18.2 Systèmes de base de données
La disponibilité à peu de frais de gigantesques mémoires à accès direct a donné l’impulsion à
d’innombrables travaux de recherche et de développement dans le domaine des
systèmes de base de
données
. Une
base de données
est une collection intégrée de données. Un système de base de
données est la somme des données elles-mêmes, du matériel qui les héberge et du logiciel
(le
système de gestion de la base de données ou SGBD
) qui contrôle le stockage et la récupération
des données, ainsi que le dialogue avec les utilisateurs.
18.2.1 Avantages des systèmes de bases de données
C. J. Date (Da81) a dressé une liste des avantages des systèmes de base de données :
Réduction de la redondance.
Élimination du manque de cohérence.
Partage des données.
Application de normes.
Mise en œuvre de restrictions sécuritaires.
Maintien de l’intégrité.
Équilibrage de besoins contradictoires.
Dans les systèmes autres que les bases de données, chaque application distincte tient à jour ses fichiers,
souvent en répétant les mêmes tâches et en recourant à divers formats physiques. Dans les systèmes de base
de données, on parvient à réduire la redondance grâce à l’intégration des fichiers distincts.
Le partage des données est sans contredit l’un des avantages majeurs des bases de données. Des
applications existantes peuvent consulter les mêmes données.
Le contrôle à partir d’un même endroit concourt à mettre en application plus strictement des
standards. C’est un enjeu particulièrement important surtout avec les réseaux informatiques dans
lesquels se produit une migration des données entre systèmes.
La sécurité est un enjeu ambivalent pour les systèmes de base de données. D’une part, le fait de
regrouper et de conserver les données dans un endroit central accentue les risques, par rapport à une
répartition des données. D’autres part, il est possible de concevoir des bases de données dotées d’une
gestion très sécuritaire des accès.
18.2.2 Indépendance des données
L’un des aspects les plus importants des bases de données est
l’indépendance des données
(c’est-à-dire que les applications n’ont pas à savoir comment les données sont gardées et
consultées dans la couche physique). Une application est dite
dépendante des données
s’il faut
que la structure de stockage et la stratégie d’accès soient immuables pour que l’application
fonctionne correctement.
L’indépendance des données permet à diverses applications d’avoir des vues différentes des
mêmes données. Du point de vue du système, il est possible de modifier, grâce à l’indépendance des
données, la structure de stockage et la stratégie d’accès à la lumière de nouveaux besoins, sans que
cela implique une modification au fonctionnement des applications.
C
HAPITRE
18 C
ONNECTIVITÉ
AUX
BASES
DE
DONNÉES
J
AVA
(JDBC) 889
18.2.3 Langages de bases de données
Les utilisateurs accèdent à une base de données au moyen d’un langage spécialisé. Les applicatifs sont
écrits avec un langage de haut niveau courant comme Java, C, C++, Visual Basic, COBOL, PL/1 ou
Pascal; l’utilisateur peut composer des requêtes pour la base de données en se servant d’un
langage de
requête
spécialisé qui facilite l’élaboration de la requête dans l’environnement de l’application.
Ces langages sont appelés des langages hôtes. Chaque langage hôte comprend généralement un
sous-langage de base de données (SLBD)
qui concerne les particularités des objets et des opérations
de la base de données. Le plus souvent, un sous-langage de données combine deux langages : un
langage de définition de données (LDD)
qui sert à définir les objets de la base de données et un
langage de manipulation des données (LMD)
qui possède les fonctionnalités propres à la spécification
des traitements appliqués aux objets de la base de données. Le très populaire langage de requête SQL
(Structured Query Language), dont nous parlons à la section 18.5, regroupe un LDD et un LMD.
18.2.4 Base de données répartie
Une base de données répartie (Wi88) est une base de données déployée sur les différents systèmes
informatiques d’un réseau. Normalement, les éléments de données dans un tel système se retrouvent à
l’endroit qui les consulte le plus souvent, tout en restant accessibles aux autres utilisateurs du réseau.
Les systèmes répartis procurent le contrôle et les économies d’un traitement localisé tout en
offrant l’accessibilité aux informations en plusieurs points éloignés géographiquement. Ce sont des
solutions coûteuses à implanter et à mettre en service, en plus d’être vulnérables du point de vue de
la sécurité.
18.3 Modèle de base de données relationnelle
Trois modèles de base de données ont connu une grande diffusion : le modèle hiérarchique, le
modèle réseau et le modèle relationnel. Dans ce chapitre, nous allons décrire le modèle le plus
répandu, soit le modèle de base de données relationnelle.
Le modèle relationnel développé par Codd (Co70)(Co72)(Bl88)(Co88)(Re88) est une
représentation logique des données dans laquelle on s’intéresse aux relations entre les données, sans
considérer l’implantation physique de la structure des données.
Une base de données relationnelle est constituée de
tables
. La figure 18.1 nous montre un
exemple de table que l’on pourrait très bien retrouver dans un système de gestion de personnel. Le
nom de la table est EMPLOYÉS et son principal rôle est de faire connaître les attributs d’un employé
et le rapport entre ces attributs et un certain employé. Chaque rangée (ligne) de la table est appelée
un
enregistrement
. Notre table en question possède six enregistrements. Le champ du numéro
d’employé de cette table sert de
clé primaire
pour le renvoi aux données de cette table. Les
enregistrements de la figure 18.1 sont classés par ordre croissant de la clé primaire. Normalement,
les tables dans une base de données possèdent une clé primaire, mais ce n’est pas obligatoire. La clé
primaire peut être la combinaison de deux colonnes (champs) ou plus de la base de données. Les
champs servant de clé primaire ne peuvent jamais avoir de doublon.
Chaque colonne d’une table correspond à un
champ
différent. Le plus souvent, les enregis-
trements sont uniques (par la clé primaire) dans une table, mais des valeurs de champ pourront être
identiques dans différents enregistrements. Par exemple, trois enregistrements différents de la table
EMPLOYÉS possèdent le même numéro de service 413.
890 C
ONNECTIVITÉ
AUX
BASES
DE
DONNÉES
J
AVA
(JDBC) C
HAPITRE
18
Différents utilisateurs d’une base de données sont souvent intéressés par différents aspects des
données et différentes relations entre les données. Des utilisateurs ne veulent connaître que certains
sous-ensembles des colonnes de la table. Par contre, d’autres utilisateurs souhaitent combiner de
petites tables pour obtenir de grandes tables plus complexes. Codd a appelé
projection
l’opération
d’intersection et
jointure
l’opération de combinaison.
Dans la table de la figure 18.1, on pourrait, par exemple, effectuer une projection pour obtenir
une nouvelle table appelée SERVICE-LOCALISATEUR dont le rôle est de montrer les emplacements
des services. Cette nouvelle table est reproduite à la figure 18.2. Dans Java, une table est manipulée
sous forme d’un objet
ResultSet
.
L’organisation relationnelle d’une base de données procure de nombreux avantages par rapport
au modèle hiérarchique et au modèle réseau:
1. La représentation dans des tables du modèle relationnel est facile à comprendre par les
utilisateurs et son implantation physique ne pose pas de difficulté.
2. La conversion de presque n’importe quelle autre structure de base de données en une
structure relationnelle est relativement facile.
3. Les opérations de projection et de jointure sont facilement réalisables et permettent de créer
sans difficulté les nouvelles tables nécessaires à des applications particulières.
4. Les recherches dans une base de données peuvent être plus rapides que dans un modèle qui
exige que l’on suive une série de pointeurs.
Figure 18.1
Structure d’une base de données relationnelle.
Figure 18.2
Une table formée par projection.
Table: EMPLOYÉS
Numéro Service Salaire Emplacement
Nom
23603 413 1100 MONTRÉAL
JONES, A.
24568 413 2000 MONTRÉAL
KERWIN, R.
34589 642 1800 GENÈVE
LARSON, P.
35761 611 1400 PARIS
MYERS, B.
47132 413 9000 MONTRÉAL
NEUMANN, C.
78321 611 8500 PARIS
STEPHENS, T.
Clé primaire Une colonne
Un enregistrement
Table: SERVICE-LOCALISATEUR
Service Emplacement
413 MONTRÉAL
642 GENÈVE
611 PARIS
1 / 49 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 !