INTRODUCTION GENERALE
Le langage Java est un langage généraliste de programmation synthétisant les
principaux langages existants lors de sa création en 1995 par James Gosling
et Patrick Naughton employés de Sun Microsystems. Il permet une
programmation orientée-objet.
Outre son orientation objet, le langage Java a l’avantage d’être modulaire
(nous pouvons écrire des portions de code génériques, c.-à-d. utilisables par
plusieurs applications), rigoureux (la plupart des erreurs se produisent à la
compilation et non à l’exécution) et portable (un même programme compilé
peut s’exécuter sur différents environnements). En contrepartie, les
applications Java ont le défaut d’être plus lentes à l’exécution.
Objectif du cours
Ce cours a pour objectif d’apprendre à l’étudiant la manipulation et la
réalisation des applications informatiques en utilisant le langage Java.
Plan du cours
Voici les différents chapitres que nous allons exploiter durant le 45H du cours :
Chapitre 1 : Généralités sur le langage Java
Chapitre 2 : Syntaxe du langage
Chapitre 3 : Eléments de programmation Java
Chapitre 4 : Héritage
Chapitre 5 : Gestion des exceptions
Chapitre 6 : Notions sur les applications graphiques
Chapitre 7 : Java et les Base de données
Bonne compréhension
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
CHAPITRE 1 : GENERALITES SUR LE LANGAGE JAVA
1.1. Environnement Java
Java est un langage interprété, ce qui signifie qu’un programme compilé n’est
pas directement exécutable par le système d’exploitation mais il doit être
interprété par un autre programme, que nous appelons interpréteur. La
figure 1.1 illustre ce fonctionnement.
Figure 1.1 – Interprétation du langage
Un programmeur Java écrit son code source, sous la forme de classes, dans
des fichiers dont l’extension est .java. Ce code source est alors compilé par le
compilateur javac en un langage appelé bytecode et enregistre le résultat
dans un fichier dont l’extension est .class. Le bytecode ainsi obtenu n’est pas
directement utilisable. Il doit être interprété par la machine virtuelle de Java
qui transforme alors le code compilé en code machine compréhensible par le
système d’exploitation. C’est la raison pour laquelle Java est un langage
portable : le bytecode reste le même quelque soit l’environnement
d’exécution.
En 2009, Sun Microsystems est racheté par Oracle Corporation qui
fournit dorénavant les outils de développement Java SE (Standard Edition)
contenus dans le Java Development Kit (JDK).
1.2. Programmation orientée-objet
Chaque langage de programmation appartient à une “famille” de langages
définissant une approche ou une méthodologie générale de programmation.
Par exemple, le langage C, est un langage de programmation procédurale car
il suppose que le programmeur s’intéresse en priorité aux traitements que son
programme devra effectuer. Un programmeur C commencera par identifier ces
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
traitements pour écrire les fonctions qui les réalisent sur des données prises
comme paramètres d’entrée.
La programmation orientée-objet (introduite par le langage SmallTalk) propose
une méthodologie centrée sur les données. Le programmeur Java va d’abord
identifier un ensemble d’objets, tel que chaque objet représente un élément
qui doit être utilisé ou manipulé par le programme, sous la forme d’ensembles
de données. Ce n’est que dans un deuxième temps, que le programmeur va
écrire les traitements, en associant chaque traitement à un objet donné. Un
objet peut être vu comme une entité regroupant un ensemble de données et
de méthodes (l’équivalent d’une fonction en C) de traitement.
1.2.1. Classe
Un objet est une variable (presque) comme les autres. Il faut notamment qu’il
soit déclaré avec son type. Le type d’un objet est un type complexe (par
opposition aux types primitifs entier, caractère, …) qu’on appelle une classe.
Une classe regroupe un ensemble de données (qui peuvent être des variables
primitives ou des objets) et un ensemble de méthodes de traitement de ces
données et/ou de données extérieures à la classe. On parle d’encapsulation
pour désigner le regroupement de données dans une classe.
Par exemple, une classe Rectangle utilisée pour instancier des objets
représentant des rectangles, encapsule 4 entiers : la longueur et la largeur du
rectangle ainsi que la position en abscisse et en ordonnée de l’origine du
rectangle (par exemple, le coin en haut à gauche). On peut alors imaginer que
la classe Rectangle implémente une méthode permettant de déplacer le
rectangle qui nécessite en entrée deux entiers indiquant la distance de
déplacement en abscisse et en ordonnée.
L’accès aux positions de l’origine du rectangle se fait directement (i.e. sans
passage de paramètre) lorsque les données sont encapsulées dans la classe
où est définie la méthode. Un exemple, écrit en Java, de la classe Rectangle
est donné ci-dessous :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Pour écrire un programme avec un langage orienté-objet, le programmeur
écrit uniquement des classes correspondant aux objets de son système. Les
traitements à effectuer sont programmés dans les méthodes de ces classes qui
peuvent faire appel à des méthodes d’autres classes. En général, on définit
une classe, dite “exécutable”, dont une méthode peut être appelée pour
exécuter le programme.
Encapsulation
Lors de la conception d’un programme orienté-objet, le programmeur doit
identifier les objets et les données appartenant à chaque objet mais aussi des
droits d’accès qu’ont les autres objets sur ces données. L’encapsulation de
données dans un objet permet de cacher ou non leur existence aux autres
objets du programme. Une donnée peut être déclarée en accès :
public : les autres objets peuvent accéder à la valeur de cette
donnée ainsi que la modifier ;
privé (Private) : les autres objets n’ont pas le droit d’accéder
directement à la valeur de cette donnée (ni de la modifier). En
revanche, ils peuvent le faire indirectement par des méthodes de
l’objet concerné (si celles-ci existent en accès public).
Méthode constructeur
Chaque classe doit définir une ou plusieurs méthodes particulières appelées
des constructeurs.
Un constructeur est une méthode invoquée lors de la création d’un objet.
Cette méthode, qui peut être vide, effectue les opérations nécessaires à
l’initialisation d’un objet. Chaque constructeur doit avoir le même nom que la
classe où il est défini et n’a aucune valeur de retour (c’est l’objet créé qui est
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
renvoyé). Dans l’exemple précédent de la classe rectangle, le constructeur
initialise la valeur des données encapsulées :
Plusieurs constructeurs peuvent être définis s’ils acceptent des paramètres
d’entrée différents.
1.2.2. Objet Instanciation
Un objet est une instance (anglicisme signifiant « cas » ou « exemple ») d’une
classe et est référencé par une variable ayant un état (ou valeur). Pour créer
un objet, il est nécessaire de déclarer une variable dont le type est la classe à
instancier, puis de faire appel à un constructeur de cette classe. L’exemple ci-
dessous illustre la création d’un objet de classe Cercle en Java :
L’usage de parenthèses à l’initialisation du vecteur, montre qu’une méthode
est appelée pour l’instanciation. Cette méthode est un constructeur de la
classe Cercle. Si le constructeur appelé nécessite des paramètres d’entrée,
ceux-ci doivent être précisés entre ces parenthèses (comme lors d’un appel
classique de méthode). L’instanciation d’un objet de la classe Rectangle faisant
appel au constructeur donné en exemple ci-dessous pourra s’écrire :
1.2.3. Accès aux variables et aux méthodes
Pour accéder à une variable associée à un objet, il faut préciser l’objet qui la
contient. Le symbole ’.’ sert à séparer l’identificateur de l’objet de
l’identificateur de la variable. Une copie de la longueur d’un rectangle dans un
entier temp s’écrit :
La même syntaxe est utilisée pour appeler une méthode d’un objet. Par
exemple :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Pour qu’un tel appel soit possible, il faut que trois conditions soient remplies :
1. La variable ou la méthode appelée existe !
2. Une variable désignant l’objet visé existe et soit instanciée.
3. L’objet, au sein duquel est fait cet appel, ait le droit d’accéder à la
méthode ou à la variable
Pour référencer l’objet “courant” (celui dans lequel se situe la ligne de code),
le langage Java fournit le mot-clé this. Celui-ci n’a pas besoin d’être instancié
et s’utilise comme une variable désignant l’objet courant. Le mot-clé this est
également utilisé pour faire appel à un constructeur de l’objet courant. Ces
deux utilisations possibles de this sont illustrées dans l’exemple suivant :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
CHAPITRE 2 : SYNTAXE DU LANGAGE
Le caractère de fin d’une instruction est “ ;”
Les commentaires (non traités par le compilateur) se situent entre les
symboles “/*” et “*/” ou commencent par le symbole “//” en se terminant à la
fin de la ligne
Ou
les identificateurs de variables ou de méthodes acceptent les caractères
{a..z}, {A..Z}, $, _ ainsi que les caractères {0..9} s’ils ne sont pas le
premier caractère de l’identificateur. Il faut évidemment que
l’identificateur ne soit pas un mot réservé du langage (comme int ou
for).
Ex : mon_entier et ok4all sont des identificateurs valides mais
mon-entier et 4all ne sont pas valides pour des identificateurs.
2.1. Types de données
Le tableau 2.1 liste l’ensemble des types primitifs de données de Java.
En plus de ces types primitifs, le terme void est utilisé pour spécifier le retour
vide ou une absence de paramètres d’une méthode. On peut remarquer que
chaque type primitif possède une classe qui encapsule un attribut du type
primitif. Par exemple, la classe Integer encapsule un attribut de type int et
permet ainsi d’effectuer des opérations de traitement et des manipulations qui
seraient impossibles sur une simple variable de type int.
Java est un langage très rigoureux sur le typage des données. Il est interdit
d’affecter à une variable la valeur d’une variable d’un type différent si cette
seconde variable n’est pas explicitement transformée. Par exemple :
est interdit et doit être écrit de la manière suivante :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
TABLE 2.1 – Type primitifs de données en Java
2.1.1. Tableaux et matrices
Une variable est déclarée comme un tableau dès lors que des crochets sont
présents soit après son type, soit après son identificateur. Les deux syntaxes
suivantes sont acceptées pour déclarer un tableau d’entiers :
Un tableau a toujours une taille fixe qui doit être précisée avant l’affectation
de valeurs à ses indices, de la manière suivante :
De plus, la taille de ce tableau est disponible dans une variable length
appartenant au tableau et accessible par mon_tableau.length. On peut
également créer des matrices ou des tableaux à plusieurs dimensions en
multipliant les crochets (ex : int[][] ma_matrice;). On accède aux éléments
d’un tableau en précisant un indice entre crochets (mon_tableau[3] est le
quatrième entier du tableau) et un tableau de taille n stocke ses éléments à
des indices allant de O à n-1.
2.1.2. Chaînes de caractères
Les chaînes de caractères ne sont pas considérées en Java comme un type
primitif mais comme un tableau. On utilise une classe particulière, nommée
String, fournie dans le package java.lang.
Les variables de type String ont les caractéristiques suivantes :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
leur valeur ne peut pas être modifiée
on peut utiliser l’opérateur + pour concaténer deux chaînes de
caractères :
l’initialisation d’une chaîne de caractères s’écrit :
Un ensemble de méthodes de la classe java.lang.String permettent
d’effectuer des opérations ou des tests sur une chaîne de caractères.
2.2. Opérateurs
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
2.3. Structures de contrôle
Les structures de contrôle permettent d’exécuter un bloc d’instructions soit
plusieurs fois (instructions itératives) soit selon la valeur d’une expression
(instructions conditionnelles ou de choix multiple). Dans tous ces cas, un bloc
d’instruction est
soit une instruction unique ;
soit une suite d’instructions commençant par une accolade ouvrante “{”
et se terminant par une accolade fermante “}”.
2.3.1. Instructions conditionnelles
Syntaxe :
<condition> doit renvoyer une valeur booléenne. Si celle-ci est vraie c’est
<bloc1> (<instruction1>) qui est exécuté sinon <bloc2> (<instruction2>) est
exécuté. La partie else <bloc2> est facultative.
Exemple :
2.3.2. Instructions itératives
Les instructions itératives permettent d’exécuter plusieurs fois un bloc
d’instructions, et ce, jusqu’à ce qu’une condition donnée soit fausse. Les trois
types d’instructions itératives sont les suivantes :
TantQue...Faire... L’exécution de cette instruction suit les étapes
suivantes :
1. la condition (qui doit renvoyer une valeur booléenne)
est évaluée. Si celle-ci est vraie on passe à l’étape 2,
sinon on passe à l’étape 4 ;
2. le bloc est exécuté ;
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
3. retour à l’étape 1 ;
4. la boucle est terminée et le programme continue son
exécution en interprétant les instruction suivant le
bloc.
Syntaxe :
Exemple :
Faire...TantQue... L’exécution de cette instruction suit les étapes
suivantes :
1. le bloc est exécuté ;
2. la condition (qui doit renvoyer une valeur booléenne) est
évaluée. Si celle-ci est vraie on retourne à l’étape 1, sinon
on passe à l’étape 3 ;
3. la boucle est terminée et le programme continue son
exécution en interprétant les instruction suivant le bloc.
Syntaxe :
Exemple :
Pour...Faire Cette boucle est constituée de trois parties : (i) une
initialisation (la déclaration de variables locales à la boucle est
autorisée dans cette partie) ; (ii) une condition d’arrêt ; (iii) un
ensemble d’instructions à exécuter après chaque itération (chacune de
ces instructions est séparée par une virgule). L’exécution de cette
instruction suit les étapes suivantes :
1. les initialisations sont effectuées ;
2. la condition (qui doit renvoyer une valeur booléenne) est évaluée. Si
celle-ci est vraie on passe à l’étape 2, sinon on passe à l’étape 6 ;
3. le bloc principal est exécuté ;
4. les instructions à exécuter après chaque itération sont exécutées ;
5. retour à l’étape 2 ;
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
6. la boucle est terminée et le programme continue son exécution en
interprétant les instructions suivant le bloc principal.
Syntaxe :
Exemple :
2.3.3. Instructions break et continue
L’instruction break est utilisée pour sortir immédiatement d’un bloc
d’instructions (sans traiter les instructions restantes dans ce bloc). Dans le cas
d’une boucle on peut également utiliser l’instruction continue avec la
différence suivante :
break : l’exécution se poursuit après la boucle (comme si la condition
d’arrêt devenait vraie) ;
continue : l’exécution du bloc est arrêtée mais pas celle de la boucle.
Une nouvelle itération du bloc commence si la condition d’arrêt est
toujours vraie.
Exemple :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
CHAPITRE 3 : ÉLEMENTS DE PROGRAMMATION JAVA
3.1. Premiers pas
Un programme écrit en Java consiste en un ensemble de classes représentant
les éléments manipulés dans le programme et les traitements associés.
L’exécution du programme commence par l’exécution d’une classe qui doit
implémenter une méthode particulière “public static void main(String[]
args)”. Les classes implémentant cette méthode sont appelées classes
exécutables.
3.1.1 Classe HelloWorld
Une classe Java HelloWorld qui affiche la chaîne de caractères “Hello world”
s’écrit :
Dans ce premier programme très simple, une seule classe est utilisée.
Cependant, la conception d’un programme orienté-objet nécessite, pour des
problèmes plus complexes, de créer plusieurs classes et la classe exécutable
ne sert souvent qu’à instancier les premiers objets. La classe exécutable
suivante crée un objet en instanciant la classe Rectangle (cf. section 1.2.1.) et
affiche sa surface :
Remarque : il est obligatoire d’implémenter chaque classe publique dans un
fichier séparé et il est indispensable que ce fichier ait le même
nom que celui de la classe. Dans le cas précédent, deux fichiers
ont ainsi été créés : RectangleMain.java et Rectangle.java.
3.1.2. Packages
Un grand nombre de classes, fournies par Java SE, implémentent des données
et traitements génériques utilisables par un grand nombre d’applications. Ces
classes forment l’API (Application Programmer Interface) du langage Java.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Toutes ces classes sont organisées en packages (ou bibliothèques) dédiés à un
thème précis.
Parmi les packages les plus utilisés, on peut citer les suivants :
Pour accéder à une classe d’un package donné, il faut préalablement importer
cette classe ou son package. Par exemple, la classe Date appartenant au
package java.util qui implémente un ensemble de méthodes de traitement
sur une date peut être importée de deux manières :
une seule classe du package est importée :
toutes les classes du package sont importées (même les classes non
utilisées) :
Le programme suivant utilise cette classe pour afficher la date actuelle :
Il est possible de créer vos propres packages en précisant, avant la déclaration
d’une classe, le package auquel elle appartient. Pour assigner la classe
précédente à un package, nommé fr.emse, il faut modifier le fichier de cette
classe comme suit :
Enfin, il faut que le chemin d’accès du fichier DateMain.java corresponde au
nom de son package. Celui-ci doit donc être situé dans un répertoire
fr/emse/DateMain.java accessible à partir des chemins d’accès définis lors de
la compilation ou de l’exécution (voir section 1.1.1).
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
3.2. Variables et méthodes
3.2.1. Visibilité des champs
Dans les exemples précédents, le mot-clé public apparaît parfois au début
d’une déclaration de classe ou de méthode sans qu’il ait été expliqué jusqu’ici.
Ce mot-clé autorise n’importe quel objet à utiliser la classe ou la méthode
déclarée comme publique. La portée de cette autorisation dépend de l’élément
à laquelle elle s’applique (voir le tableau 3.1).
Tableau 3.1 – Portée des autorisations
Le mode public n’est, bien sûr, pas le seul type d’accès disponible en Java.
Deux autres motclés peuvent être utilisés en plus du type d’accès par défaut :
protected et private. Le tableau 3.2 récapitule ces différents types d’accès (la
notion de sous-classe est expliquée dans la section 4).
Table 3.2 – Autorisations d’accès
Si aucun mot-clé ne précise le type d’accès, celui par défaut est appliqué. En
général, il est souhaitable que les types d’accès soient limités et le type
d’accès public, qui est utilisé systématiquement par les programmeurs
débutants, ne doit être utilisé que s’il est indispensable. Cette restriction
permet d’éviter des erreurs lors d’accès à des méthodes ou de modifications
de variables sans connaître totalement leur rôle.
3.2.2. Variables et méthodes de classe
Dans certains cas, il est plus judicieux d’attacher une variable ou une méthode
à une classe plutôt qu’aux objets instanciant cette classe. Par exemple, la
classe java.lang.Integer possède une variable MAX_VALUE qui représente
la plus grande valeur qui peut être affectée à un entier.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Or, cette variable étant commune à tous les entiers, elle n’est pas dupliquée
dans tous les objets instanciant la classe Integer mais elle est associée
directement à la classe Integer. Une telle variable est appelée variable de
classe. De la même manière, il existe des méthodes de classe qui sont
associées directement à une classe. Pour déclarer une variable ou méthode de
classe, on utilise le mot-clé static qui doit être précisé avant le type de la
variable ou le type de retour de la méthode.
La classe java.lang.Math nous fournit un bon exemple de variable et de
méthodes de classes.
La classe Math fournit un ensemble d’outils (variables et méthodes) très
utiles pour des programmes devant effectuer des opération mathématiques
complexes. Dans la portion de classe reproduite ci-dessus, on peut notamment
y trouver une approximation de la valeur de π et une méthode convertissant la
mesure d’un angle d’une valeur en degrés en une valeur en radians. Dans le
cas de cette classe, il est tout a fait inutile de créer et d’instancier un objet à
partir de la classe Math. En effet, la valeur de π ou la conversion de degrés en
radians ne vont pas varier suivant l’objet auquel elles sont rattachées. Ce sont
des variables et des méthodes de classe qui peuvent être invoquées à partir
de toute autre classe (car elles sont déclarées en accès public) de la manière
suivante :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
CHAPITRE 4 : HERITAGE
Dans certaines applications, les classes utilisées ont en commun certaines
variables, méthodes de traitement ou même des signatures de méthode. Avec
un langage de programmation orienté-objet, on peut définir une classe à
différent niveaux d’abstraction permettant ainsi de factoriser certains attributs
communs à plusieurs classes. Une classe générale définit alors un ensemble
d’attributs qui sont partagés par d’autres classes, dont on dira qu’elles héritent
de cette classe générale.
Par exemple, les classes Carre et Rectangle peuvent partager une méthode
surface() renvoyant le résultat du calcul de la surface de la figure. Plutôt que
d’écrire deux fois cette méthode, on peut définir une relation d’héritage entre
les classes Carre et Rectangle. Dans ce cas, seule la classe Rectangle contient
le code de la méthode surface() mais celle-ci est également utilisable sur les
objets de la classe Carre si elle hérite de Rectangle.
4.1. Principe de l’héritage
L’idée principale de l’héritage est d’organiser les classes de manière
hiérarchique. La relation d’héritage est unidirectionnelle et, si une classe B
hérite d’une classe A, on dira que B est une sousclasse de A. Cette notion de
sous-classe signifie que la classe B est un cas particulier de la classe A et donc
que les objets instanciant la classe B instancient également la classe A.
Prenons comme exemple des classes Carre, Rectangle et Cercle. La figure .
propose une organisation hiérarchique de ces classes telle que Carre hérite de
Rectangle qui hérite, ainsi que Cercle, d’une classe Forme.
Figure 4.1 – Exemple de relations d’héritage
Pour le moment, nous considérerons la classe Forme comme vide (c’est-à-dire
sans aucune variable ni méthode) et nous nous intéressons plus
particulièrement aux classes Rectangle et Carre.
La classe Rectangle héritant d’une classe vide, elle ne peut profiter d’aucun de
ses attributs et doit définir toutes ses variables et méthodes. Une relation
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
d’héritage se définit en Java par le mot-clé extends utilisé comme dans
l’exemple suivant :
En revanche, la classe Carre peut bénéficier de la classe Rectangle et ne
nécessite pas la réécriture de ces méthodes si celles-ci conviennent à la sous-
classe. Toutes les méthodes et variables de la classe Rectangle ne sont
néanmoins pas accessibles dans la classe Carre. Pour qu’un attribut puisse
être utilisé dans une sous-classe, il faut que son type d’accès soit public ou
protected, ou, si les deux classes sont situées dans le même package, qu’il
utilise le type d’accès par défaut. Dans cet exemple, les variables longueur et
largeur ne sont pas accessibles dans la class Carre qui doit passer par les
méthodes getLargeur() et getLongueur(), déclarées comme publiques.
4.1.1. Redéfinition
L’héritage intégral des attributs de la classe Rectangle pose deux problèmes :
1. il faut que chaque carré ait une longueur et une largeur égales ;
2. la méthode affiche écrit le mot “rectangle” en début de chaîne. Il
serait souhaitable que ce soit “carré” qui s’affiche.
De plus, les constructeurs ne sont pas hérités par une sous-classe. Il faut donc
écrire un constructeur spécifique pour Carre. Ceci nous permettra de résoudre
le premier problème en écrivant un constructeur qui ne prend qu’un paramètre
qui sera affecté à la longueur et à la largeur. Pour attribuer une valeur à ces
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
variables (qui sont privées), le constructeur de Carre doit faire appel au
constructeur de Rectangle en utilisant le mot-clé super qui fait appel au
constructeur de la classe supérieure comme suit :
Remarque :
L’appel au constructeur d’une classe supérieure doit toujours se situer
dans un constructeur et toujours en tant que première instruction ;
Si aucun appel à un constructeur d’une classe supérieure n’est fait, le
constructeur fait appel implicitement à un constructeur vide de la classe
supérieure (comme si la ligne super() était présente). Si aucun
constructeur vide n’est accessible dans la classe supérieure, une erreur
se produit lors de la compilation.
Le second problème peut être résolu par une redéfinition de méthode. On dit
qu’une méthode d’une sous-classe redéfinit une méthode de sa classe
supérieure, si elles ont la même signature mais que le traitement effectué est
réécrit dans la sous-classe. Voici le code de la classe Carre où sont résolus les
deux problèmes soulevés :
Lors de la redéfinition d’une méthode, il est encore possible d’accéder à la
méthode redéfinie dans la classe supérieure. Cet accès utilise également le
mot-clé super comme préfixe à la méthode.
Dans notre cas, il faudrait écrire super.affiche() pour effectuer le traitement de
la méthode affiche() de Rectangle.
Enfin, il est possible d’interdire la redéfinition d’une méthode ou d’une variable
en introduisant le mot-clé final au début d’une signature de méthode ou d’une
déclaration de variable. Il est aussi possible d’interdire l’héritage d’une classe
en utilisant final au début de la déclaration d’une classe (avant le mot-clé
class).
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
4.1.2. Polymorphisme
Le polymorphisme est la faculté attribuée à un objet d’être une instance de
plusieurs classes.
Il a une seule classe “réelle” qui est celle dont le constructeur a été appelé en
premier (c’est-à-dire la classe figurant après le new) mais il peut aussi être
déclaré avec une classe supérieure à sa classe réelle. Cette propriété est très
utile pour la création d’ensembles regroupant des objets de classes différentes
comme dans l’exemple suivant :
L’opérateur instanceof peut être utilisé pour tester l’appartenance à une
classe comme suit :
L’exécution de ce code sur le tableau précédent affiche le texte suivant :
element[0] est une forme
element[0] est un rectangle
element[1] est une forme
element[1] est un cercle
element[2] est une forme
element[2] est un rectangle
element[3] est une forme
element[3] est un rectangle
element[3] est un carré
L’ensemble des classes Java, y compris celles écrites en dehors de l’API, forme
une hiérarchie avec une racine unique. Cette racine est la classe Object dont
hérite toute autre classe. En effet, si vous ne précisez pas explicitement une
relation d’héritage lors de l’écriture d’une classe, celle-ci hérite par défaut de la
classe Object. Grâce à cette propriété, des classes génériques ¹ de création et
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
de gestion d’un ensemble, plus élaborées que les tableaux, regroupent des
objets appartenant à la classe Object (donc de n’importe quelle classe).
Une des propriétés induites par le polymorphisme est que l’interpréteur Java
est capable de trouver le traitement à effectuer lors de l’appel d’une méthode
sur un objet. Ainsi, pour plusieurs objets déclarés sous la même classe (mais
n’ayant pas la même classe réelle), le traitement associé à une méthode
donnée peut être différent. Si cette méthode est redéfinie par la classe réelle
d’un objet (ou par une classe située entre la classe réelle et la classe de
déclaration), le traitement effectué est celui défini dans la classe la plus
spécifique de l’objet et qui redéfinie la méthode.
Dans notre exemple, la méthode affiche() est redéfinie dans toutes les sous-
classes de Forme et les traitements effectués sont :
Résultat :
rectangle 10x20
cercle 15
rectangle 5x30
carré 10
Dans l’état actuel de nos classes, ce code ne pourra cependant pas être
compilé. En effet, la fonction affiche() est appelée sur des objets dont la classe
déclarée est Forme mais celle-ci ne contient aucune fonction appelée affiche()
(elle est seulement définie dans ses sous-classes).
Pour compiler ce programme, il faut transformer la classe Forme en une
interface ou une classe abstraite tel que cela est fait dans les sections
suivantes.
4.2. Interfaces
Une interface est un type, au même titre qu’une classe, mais abstrait et qui
donc ne peut être instancié (par appel à new plus constructeur). Une interface
décrit un ensemble de signatures de méthodes, sans implémentation, qui
doivent être implémentées dans toutes les classes qui implémentent
l’interface. L’utilité du concept d’interface réside dans le regroupement de
plusieurs classes, tel que chacune implémente un ensemble commun de
méthodes, sous un même type. Une interface possède les caractéristiques
suivantes :
elle contient des signatures de méthodes ;
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
elle ne peut pas contenir de variables ;
une interface peut hériter d’une autre interface (avec le mot-clé
extends) ;
une classe (abstraite ou non) peut implémenter plusieurs interfaces. La
liste des interfaces implémentées doit alors figurer après le mot-clé
implements placé dans la déclaration de classe, en séparant chaque
interface par une virgule.
Dans notre exemple, Forme peut être une interface décrivant les méthodes qui
doivent être implémentées par les classes Rectangle et Cercle, ainsi que par la
classe Carre (même si celle-ci peut profiter de son héritage de Rectangle).
L’interface Forme s’écrit alors de la manière suivante :
Pour obliger les classes Rectangle, Cercle et Carre à implémenter les méthodes
surface() et affiche(), il faut modifier l’héritage de ce qui était la classe Forme
en une implémentation de l’interface définie ci-dessus :
Et
Cette structure de classes nous permet désormais de pouvoir compiler
l’exemple donné dans la section 4.1.2 traitant du polymorphisme. En déclarant
un tableau constitué d’objets implémentant l’interface Forme, on peut appeler
la méthode affiche() qui existe et est implémentée par chaque objet.
Si une classe implémente une interface mais que le programmeur n’a pas écrit
l’implémentation de toutes les méthodes de l’interface, une erreur de
compilation se produira sauf si la classe est une classe abstraite.
4.3. Classes abstraites
Le concept de classe abstraite se situe entre celui de classe et celui
d’interface. C’est une classe qu’on ne peut pas directement instancier car
certaines de ses méthodes ne sont pas implémentées. Une classe abstraite
peut donc contenir des variables, des méthodes implémentées et des
signatures de méthode à implémenter. Une classe abstraite peut implémenter
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
(partiellement ou totalement) des interfaces et peut hériter d’une classe ou
d’une classe abstraite.
Le mot-clé abstract est utilisé devant le mot-clé class pour déclarer une classe
abstraite, ainsi que pour la déclaration de signatures de méthodes à
implémenter.
Imaginons que l’on souhaite attribuer deux variables, origine_x et origine_y, à
tout objet représentant une forme. Comme une interface ne peut contenir de
variables, il faut transformer
Forme en classe abstraite comme suit :
De plus, il faut rétablir l’héritage des classes Rectangle et Cercle vers Forme :
Et
Lorsqu’une classe hérite d’une classe abstraite, elle doit :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
soit implémenter les méthodes abstraites de sa super-classe en les
dotant d’un corps ;
soit être elle-même abstraite si au moins une des méthodes abstraites
de sa super-classe reste abstraite.
4.4. Classes et méthodes génériques
Il est parfois utile de définir des classes paramétrées par un type de données
(ou une classe).
Par exemple, dans le package java.util, de nombreuses classes sont
génériques et notamment les classes représentant des ensembles (Vector,
ArrayList, etc.). Ces classes sont génériques dans le sens où elles prennent en
paramètre un type (classe ou interface) quelconque E. E est en quelque sorte
une variable qui peut prendre comme valeur un type de donné. Ceci se note
comme suit, en prenant l’exempe de java.util.ArrayList :
Nous pouvons remarquer que le type passé en paramètre est noté entre
chevrons (ex : <E>), et qu’il peut ensuite être réutilisé dans le corps de la
classe, par des méthodes (ex : la méthode set renvoie un élément de classe
E).
Il est possible de définir des contraintes sur le type passé en paramètre,
comme par exemple une contrainte de type extends :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Ceci signifie que la classe SortedList (liste ordonnée que nous voulons
définir) est paramétrée par le type T qui doit être un type dérivé (par héritage
ou interfaçage) de Comparable<T>.
En bref, nous définissons une liste ordonnée d’éléments comparables entre
eux (pour pouvoir les trier), grâce à la méthode int compareTo(T o) de
l’interface Comparable ³ qui permet de comparer un Comparable à un élément
de type T.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
CHAPITRE 5 : GESTION DES EXCEPTIONS
Les exceptions représentent le mécanisme de gestion des erreurs intégré au
langage Java. Il se compose d'objets représentant les erreurs et d'un
ensemble de trois mots clés qui permettent de détecter et de traiter ces
erreurs (try, catch et finally ) mais aussi de les lever ou les propager
(throw et throws).
Lors de la détection d'une erreur, un objet qui hérite de la classe Exception est
créé (on dit qu'une exception est levée) et propagé à travers la pile
d'exécution jusqu'à ce qu'il soit traité.
Ces mécanismes permettent de renforcer la sécurité du code Java.
Exemple : une exception levée à l’exécution non capturée
public abstract class TestException {
public static void main(String[] args) {
int i = 3;
int j = 0;
System.out.println("résultat = " + (i / j));
comme exception, nous aurons :
Exception in thread "main" java.lang.ArithmeticException: / by zero
at exemple1.TestException.main(TestException.java:9)
Si dans un bloc de code on fait appel à une méthode qui peut potentiellement
générer une exception, on doit soit essayer de la récupérer avec try/catch, soit
ajouter le mot clé throws dans la déclaration du bloc. Si on ne le fait pas, il y a
une erreur à la compilation. Les erreurs et exceptions du paquetage java.lang
échappent à cette contrainte. Throws permet de déléguer la responsabilité des
erreurs à la méthode appelante.
Ce procédé présente un inconvénient : de nombreuses méthodes des
packages java indiquent dans leur déclaration qu'elles peuvent lever une
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
exception. Cependant ceci garantit que certaines exceptions critiques seront
prises explicitement en compte par le programmeur.
5.1. Les mots clés try, catch et finally
Le bloc try rassemble les appels de méthodes susceptibles de produire des
erreurs ou des exceptions. L'instruction try est suivie d'instructions entre des
accolades.
public static void main(String[] args) {
try {
operation_risquée1;
opération_risquée2;
} catch (ExceptionInteressante e) {
traitements
} catch (ExceptionParticulière e) {
traitements
} catch (Exception e) {
traitements
} finally {
traitement_pour_terminer_proprement;
}
Si un événement indésirable survient dans le bloc try, la partie éventuellement
non exécutée de ce bloc est abandonnée et le premier bloc catch est traité. Si
un bloc catch est défini pour capturer l'exception issue du bloc try alors elle
est traitée en exécutant le code associé au bloc. Si le bloc catch est vide
(aucune instruction entre les accolades) alors l'exception capturée est ignorée.
Une telle utilisation de l'instruction try/catch n'est pas une bonne pratique : il
est préférable de toujours apporter un traitement adapté lors de la capture
d'une exception.
S'il y a plusieurs types d'erreurs et d'exceptions à intercepter, il faut définir
autant de blocs catch que de types d'événements. Par type d'exception, il faut
comprendre « qui est du type de la classe de l'exception ou d'une de ses sous-
classes ». Ainsi dans l'ordre séquentiel des clauses catch, un type d'exception
ne doit pas venir après un type d'une exception d'une superclasse. Il faut faire
attention à l'ordre des clauses catch pour traiter en premier les exceptions les
plus précises (sous-classes) avant les exceptions plus générales. Un message
d'erreur est émis par le compilateur dans le cas contraire.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
5.2. La classe Throwable
Cette classe descend directement de la classe Object : c'est la classe de base
pour le traitement des erreurs.
Cette classe possède deux constructeurs :
Méthode Rôle
Throwable()
Throwable(String) La chaîne en paramètre permet de définir un message
qui décritl'exception et qui pourra être consulté dans un
bloc catch.
Les principales méthodes de la classe Throwable sont :
Méthodes Rôle
String getMessage( ) lecture du message
void printStackTrace( ) affiche l'exception et l'état de la pile
d'exécution au moment de son appel
void printStackTrace(PrintStream s) Idem mais envoie le résultat dans un
flux
Exemple :
public static void main(String[] args) {
// Insert code to start the application here.
int i = 3;
int j = 0;
try {
System.out.println("résultat = " + (i / j));
} catch (ArithmeticException e) {
System.out.println("getmessage");
System.out.println(e.getMessage());
System.out.println(" ");
System.out.println("toString");
System.out.println(e.toString());
System.out.println(" ");
System.out.println("printStackTrace");
e.printStackTrace();
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
Comme résultat :
printStackTrace
java.lang.ArithmeticException: / by zero
at exemple1.TestException.main(TestException.java:11)
5.3. Les classes Exception, RunTimeException et Error
Ces trois classes descendent de Throwable : en fait, toutes les exceptions
dérivent de la classe Throwable.
La classe Error représente une erreur grave intervenue dans la machine
virtuelle Java ou dans un sous-système Java. L'application Java s'arrête
instantanément dès l'apparition d'une exception de la classe Error.
La classe Exception représente des erreurs moins graves. Les exceptions
héritant de la classe RuntimeException n'ont pas besoin d'être détectées
impérativement par des blocs try/catch.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
CHAPITRE 6 : NOTIONS SUR LES APPLICATIONS GRAPHIQUES
6.1. Généralité
Pour créer des applications graphiques en Java, nous disposons des classes
Swing et SWT.
Notre application doit d’abord créer la fenêtre (frame) de notre programme.
Pour cela, on utilise la classe JFrame à laquelle on ajoute les méthodes dont
on a besoin.
Ensuite, il faut poser des composants dans cette fenêtre (bouton, textes, …) et
cela nécessite un conteneur, on utilise la classe JPanel.
Ensuite, on pose les composants dans le conteneur ;
Voici les classes des quelques éléments capable d’être utilisé dans une
application graphique en Java :
- Classe JLabel : texte statique
- Classe JButton : bouton
- Classe JTextField : texte dynamique (champ de texte)
- Classe ImageIcon : Image
- …
Pour que notre application soit interactive, il faut créer une interface, c.-à-d.
qu’il faut ajouter des écouteurs d’évènements aux composants qui doivent
réagir aux actions de l’utilisateur.
Il faut faire de même avec la souris et le clavier si on veut les « écouter ».
Les boutons et les champs de texte utilisent la classe ActionListener.
La souris utilise la classe MouseListener.
Le clavier utilise la classe KeyListener.
6.2. Le WindowBuilder
Avec un E.D.I. intégrant le WindowBuilder (eclipse), la réalisation d'une
interface graphique se décompose en deux parties :
La partie design: c'est la réalisation du rendu visuel de l'interface.
Cette partie ne nécessite aucune programmation. Le développeur
sélectionne les composants qu'il veut utiliser dans des palettes de
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
composants et les dépose sur la fenêtre. Il peut ensuite modifier leurs
propriétés (position, dimension, couleur par exemple).
La partie programmation évènementielle: c'est l'écriture des
gestionnaires d'évènement ou autrement dit l'écriture des procédures
évènementielles. C'est ce qui permettra de rendre l'interface
fonctionnelle. C'est ici que des notions de programmation objet vont
intervenir, car une fenêtre et ses composants sont représentés par des
classes.
Pour utiliser WindowBuilder, soit il faut utiliser la version d’éclipse appelée
Juno où il est intégré dès la conception ou le télécharger comme plugin dans
d’autres version d’eclipse.
Ainsi pour accéder à la page du WindowBuilder, aller sur File → New →
Other → WindowBuilder.
Voici un exemple de la fenêtre de WindowBuilder :
Ici, nous pouvons construire notre interface graphique juste en faisant le
Drug and drop.
6.3. Les boîtes des dialogue-JOptionPane
Pour réaliser des applications plus interactive, nous avons besoin d’utiliser les
boîtes des dialogues.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
La classe JOptionPane est utilisée pour fournir des boîtes de dialogue
standard telles que la boîte de message, la boîte de confirmation et la boîte de
saisie. Ces boîtes de dialogue sont utilisées pour afficher des informations ou
obtenir des informations de l’utilisateur. La classe JOptionPane hérite de la
classe JComponent.
Les constructeurs de la classe JOptionPane sont:
Constructeurs de JOptionPane Description
JOptionPane() Il est utilisé pour créer
un JOptionPane avec un
message de test.
JOptionPane(Object message) Il est utilisé pour créer
une instance de
JOptionPane pour
afficher un message.
JOptionPane(Object message, int message Type) Il est utilisé pour créer
une instance de
JOptionPane pour
afficher un message avec
le type de message
spécifié et les options par
défaut
Les méthodes couramment utilisées sont:
createDialog(String title) : Il est utilisé pour créer et renvoyer un
nouveau JDialog sans parent avec le titre spécifié.
showMessageDialog(Component parentComponent, Object
message) : Il est utilisé pour créer une boîte de message d’information
intitulée « Message ».
showMessageDialog(Component parentComponent, Object
message, String title, int messageType) : Il est utilisé pour créer
une boîte de message avec un titre et un type de message donnés.
showConfirmDialog(Component parentComponent, Object
message) : Il est utilisé pour créer une boîte de dialogue avec les
options Oui, Non et Annuler; avec le titre, Sélectionnez une option.
showInputDialog(Component parentComponent, Object
message) : Il est utilisé pour afficher une boîte de question-message
demandant l’entrée de l’utilisateur.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
void setInputValue(Object newValue) : Il est utilisé pour définir la
valeur entrée par l’utilisateur.
Exemple 1 : showMessageDialog()
import javax.swing.*;
public class MyJOptionPane {
MyJOptionPane(){
JFrame frame=new JFrame();
JOptionPane.showMessageDialog(frame, "Bonjour à tous !");
}
public static void main(String[] args) {
new MyJOptionPane();
Exemple 2 : showMessageDialog()
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class MyJOptionPane {
MyJOptionPane(){
JFrame frame=new JFrame();
JOptionPane.showMessageDialog(frame, "Echec de connexion !",
"Alert", JOptionPane.WARNING_MESSAGE);
public static void main(String[] args) {
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
new MyJOptionPane();
Exemple 3 : showInputDialog()
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class MyJOptionPane {
MyJOptionPane(){
JFrame frame=new JFrame();
String nom=JOptionPane.showInputDialog(frame, "Entrez votre
nom :");
}
public static void main(String[] args) {
new MyJOptionPane();
Exemple 4 : showConfirmDialog()
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
import javax.swing.*;
import java.awt.event.*;
public class MyJOptionPane extends WindowAdapter
{
JFrame frame;
MyJOptionPane()
{
frame = new JFrame();
frame.addWindowListener(this);
frame.setSize(250, 250);
frame.setLayout(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
public void windowClosing(WindowEvent e)
{
int res = JOptionPane.showConfirmDialog(frame,"Etes-vous sur?");
if(res == JOptionPane.YES_OPTION)
{
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public static void main(String[] args)
{
new MyJOptionPane();
}
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
CHAPITRE 7 : JAVA ET LES BASES DE DONNEES
7.1. LE JAVA DATABASE CONNECTIVITY (JDBC)
7.1.1. Présentation
JDBC (Java database connectivity): c’est l’API offrant la relation entre
Java et les bases de données.
C’est API est développée par SUN pour permettre à des applications
Java d'accéder à des bases de données relationnelles quelconques.
JDBC: un driver (pilote) fournit des outils pour traiter avec les bases de
données.
Les étapes principales de ce traitement sont:
1. Se connecter à une base de données;
2. Envoyer une requête SQL;
3. Manipuler le résultat.
7.1.2. Schéma
La connexion peut s'etablir si on donne l'adresse de la BD à laquelle se
connecter.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
7.1.3. Interfaces de JDBC
7.1.4. Architecture d’une application JDBC
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
7.1.5. Connexion à une base de données
Charger le pilote JDBC avec l’instruction :
Dès que le driver a reconnu le gestionnaire de base de données
correspondant (phpMyAdmin par exemple), on réalise une connexion avec
la base de données. On fournit alors l’url de la base, le nom d'utilisateur et
le mot de passe.
Exemple:
7.1.6. Les requêtes de sélection
L'objet Connection créé va permettre d'interagir avec la base. Pour réaliser
des requêtes, on utilise un objet st de type Statement.
Le résultat d'une requête est récupéré par un objet res de type interface
ResultSet et permet d'accéder aux données extraites grâce à la requête.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Après la requête, le "curseur" est positionné juste avant la première ligne du
résultat. La méthode next() permet d'avancer d'enregistrement en
enregistrement séquentiellement : res.next().
Pour récupérer les données dans chaque colonne, l'interface ResultSet
propose plusieurs méthodes adaptées aux types de données récupérées :
Exemple d’affichage de données
7.1.7. Les requêtes de mises à jour
La mise à jour d'une base de données peut être effectuée par une
requête SQL de type INSERT, UPDATE ou DELETE à travers la
méthode executeUpdate("Requête") sur un objet de type
Statement.
Le résultat renvoyé par l'exécution de la requête indiquera le nombre de
lignes mises à jour dans la base de données, contrairement à une
requête de sélection qui renvoie un ResultSet.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Exemple: Ajout d’un enregistrement
Exemple : Modifier un enregistrement
Exemple : Modification de la base de données
On peut ajouter une nouvelle table Personne à la BD :
La table Personne contient 4 attributs et une clé primaire non nulle et auto-
incrémentée.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Exemple : Supprimer un enregistrement
7.1.8. Déconnexion
La méthode close() permet de libérer les ressources
prises par la création d'objets de
type ResultSet, Statement et Connection.
Elle existe pour chacune de ces interfaces. Elle est le plus souvent
employée pour une Connection, car elle libère en même temps toutes
les ressources qui lui sont associées.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
7.1.9. Exemple complet
7.1.9.1 .Création de la base de données
La base de données sera créée en suivant l’image ci-après :
Plus de détails lors de la pratique pendant le cours avec l’enseignant.
7.1.9.2. Création de l’application java manipulant la base de données
Supposant que nous voulons associer aux boutons des événements:
1. Bouton Ajouter enregi: ajoute un enregistrement dans la table TBLTAB.
2. Bouton Modifier : modifie un enregistrement dans la table TBLTAB.
3. Bouton Supprimer: supprime un enregistrement dans la table TBLTAB.
4. Bouton Afficher Table : affiche tous les enregistrement de la table TBLTAB.
5. Bouton Remise à zéro : remet les entrées du formulaire à vide
6. Bouton Fermer : qui ferme le formulaire et l’application.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Les données à ajouter dans la table seront lues à partir des zones de saisie.
La table tab contient les champs: IDTAB(Integer, Primary Key), FLDNOM(String),
FLDPOSTNOM(String), FLDAGE(String).
Les codes du programme :
package Test1;
import java.sql.Connection;
import java.sql.DriverManager;
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class ApplcationTest_1 extends javax.swing.JFrame {
private Connection con;
private Statement st;
public ApplcationTest_1() {
initComponents();
try{
Class.forName("org.apache.derby.jdbc.ClientDriver");
con=DriverManager.getConnection("jdbc:derby://localhost:1527/DataBaseTest
_1","aia","aia");
st=con.createStatement();
System.out.println("accès avec succès !");
}catch(ClassNotFoundException | SQLException ex){
System.out.println("Erreur: "+ex);
}
}
//Bouton Enregistrement
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String N="", P="", A="", ID="";
ID=id.getText();
N=nom.getText();
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
P=postnom.getText();
A=age.getText();//Conversion d'un texte en int
//Affichage des valeurs sur le console
System.out.println(N+P+A);
try{
st=con.createStatement();
String requete="Insert Into TBLTAB(ID, FLDNOM, FLDPOSTNOM,
FLDAGE)"+"Values('"+ID+"','"+N+"', '"+P+"', '"+A+"')";
st.executeUpdate(requete);
System.out.println("Entrée Enregistrée !");
//Remise à vide des textfield
id.setText("");
nom.setText("");
postnom.setText("");
age.setText("");
}catch(SQLException ex){
System.out.println("Erreur: "+ex);
}
}
}
//Bouton Modification
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
String N="", P="", A="", ID="";
ID=id.getText();//Conversion d'un texte en int
N=nom.getText();
P=postnom.getText();
A=age.getText();
//Affichage des valeurs sur le console
System.out.println(N+P+A);
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
try{
st=con.createStatement();
String requete="Update TBLTAB Set fldNom='"+N+"',
fldPostNom='"+P+"', fldAge='"+A+"' Where id='"+ID+"'";
st.executeUpdate(requete);
System.out.println("Table modifiée !");
//Remise à vide des textfield
id.setText("");
nom.setText("");
postnom.setText("");
age.setText("");
}catch(SQLException ex){
System.out.println("Erreur: "+ex);
}
}
//Bouton Suppression
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
String N="", P="", A="", ID="";
ID=id.getText();//Conversion d'un texte en int
N=nom.getText();
P=postnom.getText();
A=age.getText();
//Affichage des valeurs sur le console
System.out.println(N+P+A);
try{
st=con.createStatement();
String requete="Delete from TBLTAB Where id='"+ID+"'";
st.executeUpdate(requete);
System.out.println(" Enregistrement Supprimer !");
//Remise à vide des textfield
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
id.setText("");
nom.setText("");
postnom.setText("");
age.setText("");
}catch(SQLException ex){
System.out.println("Erreur: "+ex);
}
}
//Bouton Afficher Table
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
try{
st=con.createStatement();
String requete="Select * from TBLTAB";
ResultSet rs=st.executeQuery(requete);
System.out.println(" Les enregistrements dans la base de données
sont: ");
while(rs.next()){//Traitement des resultats
String ID=rs.getString("ID");
String Nom=rs.getString("FLDNOM");
String PostNom=rs.getString("FLDPOSTNOM");
String Age=rs.getString("FLDAGE");
System.out.println("ID: "+ID+"Nom: "+Nom+"Postnom:
"+PostNom+"Age: "+Age);
}
//Remise à vide des textfield
id.setText("");
nom.setText("");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
postnom.setText("");
age.setText("");
}catch(SQLException ex){
System.out.println("Erreur: "+ex);
}
}
//Bouton remise à zéro
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
id.setText("");
nom.setText("");
postnom.setText("");
age.setText("");
}
//Bouton exit
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
if(JOptionPane.showConfirmDialog(this, "Voulez-vous vraiment quitter ce
programme ?", "Attention",
JOptionPane.YES_NO_CANCEL_OPTION)==JOptionPane.YES_OPTION){
System.exit(0);
}
}
7.2. APPLICATION_1: GESTION DES COTES D’ECONOMIE
Dans ce petit projet, nous allons utiliser le JDBC MySQL.
7.2.1. Création de la base de données gestioncoteeconomie dans
phpMyAdmin
Structure de la table tbletudiant
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Structure de la table tblcourssession
La relation entre table se fait comme ceci :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
7.2.2. Création de l’application JAVA
Nous ici créer deux package, le package Application_Connexion et le
package Application_Formulaire. :
Dans le package Application_Connexion, nous avons la classe
Connecter qui nous sert de point de connexion entre l’application et la
base de données :
Les codes :
package Application_Connexion;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Connecter {
Connection con;
public Connecter(){
try{
Class.forName("com.mysql.jdbc.Driver");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
System.out.println("Le Driver fonctionne !");
}catch(ClassNotFoundException e){
System.err.println(e);
}
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/gestioncoteec
onomie","root","");
System.out.println("La connexion à la base de données à réussi !");
}catch(SQLException e){
System.err.println(e);
}
}
public Connection obtenirConnexion(){
return con;
}
}
Dans le package Application_Formulaire, nous avons les formulaires
CoursSession et IdentiteEtudiant qui nous servent de formulaire
pour les tables tbletudiant et tblcourssession :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Formulaire CoursSession
Les codes :
package Application_Formulaire;
import Application_Connexion.Connecter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class CoursSession extends javax.swing.JFrame {
Connecter conn = new Connecter();
Statement stm;
ResultSet rs;
DefaultTableModel model = new DefaultTableModel();
public CoursSession() {
initComponents();
//Code pour afficher les intitulés et les data du table tblcourssession sur
le jTable
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
model.addColumn("N° TABLE");
model.addColumn("ANNEE ACADEMIQUE");
model.addColumn("NOM TITULAIRE");
model.addColumn("N° COURS");
model.addColumn("N° ETUDIANT");
model.addColumn("PROMOTION");
model.addColumn("DEPARTEMENT");
model.addColumn("SESSION");
model.addColumn("COTE");
try {
stm = conn.obtenirConnexion().createStatement();
rs = stm.executeQuery("Select * From tblcourssession Order By
fldAnneeAcademique ASC");
while (rs.next()) {
model.addRow(new Object[]{rs.getInt("idCoursSession"),
rs.getString("fldAnneeAcademique"),
rs.getString("fldNomTitulaire"),
rs.getString("fldCours"), rs.getInt("fiEtudiant"),
rs.getString("fldPromotion"), rs.getString("fldDepartement"),
rs.getString("fldSession"),
rs.getDouble("fldCote")
});
}
} catch (SQLException e) {
System.err.println(e);
}
tblSesAn.setModel(model);
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
//Codes pour relier le jTable avec les Texfields qui agissent lors du
click sur les //Texfields
private void deplace(int i) {
try {
txtID.setText(model.getValueAt(i, 0).toString());
comAneAc.setSelectedItem(model.getValueAt(i, 1));
txtNomTit.setText(model.getValueAt(i, 2).toString());
txtCours.setText(model.getValueAt(i, 3).toString());
txtEtu.setText(model.getValueAt(i, 4).toString());
comPro.setSelectedItem(model.getValueAt(i, 5).toString());
comDep.setSelectedItem(model.getValueAt(i, 6).toString());
comSess.setSelectedItem(model.getValueAt(i, 7).toString());
txtCote.setText(model.getValueAt(i, 8).toString());
} catch (Exception e) {
System.err.println(e);
JOptionPane.showMessageDialog(null, "Erreur de deplacement" +
e.getLocalizedMessage());
}
}
//Code pour faire réagir les Textfields avec les clicks sur le jTable
private void tblSesAnKeyPressed(java.awt.event.KeyEvent evt) {
try {
int i = tblSesAn.getSelectedRow();
deplace(i);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erreur de deplacement" +
e.getLocalizedMessage());
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
//Code pour le click su Jtable en relation avec les Textfields
private void tblSesAnMouseClicked(java.awt.event.MouseEvent evt) {
try {
int i = tblSesAn.getSelectedRow();
deplace(i);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erreur de deplacement" +
e.getLocalizedMessage());
}
}
//Méthode d’actualisation du jTable
void actualiser() {
txtID.setText("");
comAneAc.setSelectedItem("");
txtNomTit.setText("");
txtCours.setText("");
txtEtu.setText("");
comPro.setSelectedItem("");
comDep.setSelectedItem("");
comSess.setSelectedItem("");
txtCote.setText("");
txtrech.setText("");
try {
model.setRowCount(0);//Pour vider le JTable avant la mise à jour
stm = conn.obtenirConnexion().createStatement();
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs = stm.executeQuery("Select * from tblcourssession ORDER BY
fldAnneeAcademique DESC");
while (rs.next()) {
model.addRow(new Object[]{rs.getInt("idCoursSession"),
rs.getString("fldAnneeAcademique"),
rs.getString("fldNomTitulaire"),
rs.getString("fldCours"), rs.getString("fiEtudiant"),
rs.getString("fldPromotion"), rs.getString("fldDepartement"),
rs.getString("fldSession"),
rs.getString("fldCote")
});
} catch (SQLException e) {
System.err.println(e);
}
tblSesAn.setModel(model);
}
//Bouton Actualiser
private void ActualiserActionPerformed(java.awt.event.ActionEvent evt) {
actualiser();
}
//Bouton_Ajouter
private void AjouterActionPerformed(java.awt.event.ActionEvent evt) {
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
String id = txtID.getText();
String aneAc = comAneAc.getSelectedItem().toString();
String nomTit = txtNomTit.getText();
String cours = txtCours.getText();
String nEtu = txtEtu.getText();
String pro = comPro.getSelectedItem().toString();
String dep= comDep.getSelectedItem().toString();
String sess= comSess.getSelectedItem().toString();
String cot = txtCote.getText();
String requete;
requete = "Insert Into tblcourssession(idCoursSession,
fldAnneeAcademique, fldNomTitulaire, fldCours, fiEtudiant, fldPromotion,
fldDepartement, fldSession, fldCote) Values('" + id + "', '" + aneAc + "', '" +
nomTit + "', '" + cours + "','" + nEtu + "', '" + pro + "', '"+dep+"', '"+sess+"',
'"+cot+"')";
try {
if (txtID.getText().equals("") ||
comAneAc.getSelectedItem().toString().equals("")
|| txtNomTit.getText().equals("") ||
txtCours.getText().equals("")
|| txtEtu.getText().equals("") ||
comPro.getSelectedItem().toString().equals("")
||
comDep.getSelectedItem().toString().equals("")||comSess.getSelectedItem().t
oString().equals("")
|| txtCote.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP veuillez remplir les
champs d'entrées, tous !");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
} else {
stm = conn.obtenirConnexion().createStatement();
stm.executeUpdate(requete);
JOptionPane.showMessageDialog(null, "La ligne est bien ajoutée");
actualiser();
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
//Bouton Modifier
private void ModifierActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (txtID.getText().equals("") ||
comAneAc.getSelectedItem().toString().equals("")
|| txtNomTit.getText().equals("")
|| txtCours.getText().equals("")
|| txtEtu.getText().equals("")
|| comPro.getSelectedItem().toString().equals("")
|| comDep.getSelectedItem().toString().equals("")
|| comSess.getSelectedItem().toString().equals("")
|| txtCote.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP entrez les données
à modifier");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
} else if (JOptionPane.showConfirmDialog(null, "Confirmez-vous la
modification", "Modification", JOptionPane.YES_NO_OPTION) ==
JOptionPane.OK_OPTION) {
stm.executeUpdate("UPDATE tblcourssession SET
fldAnneeAcademique='" + comAneAc.getSelectedItem().toString() + "',
fldNomTitulaire='" + txtNomTit.getText() + "', fldCours='" +
txtCours.getText() + "',fiEtudiant='"+txtEtu.getText()+"' ,fldPromotion='" +
comPro.getSelectedItem().toString() +"',
fldDepartement='"+comDep.getSelectedItem().toString()+"',fldSession='"+co
mSess.getSelectedItem().toString()+"', fldCote='"+txtCote.getText()+"'
WHERE idCoursSession=" + txtID.getText());
JOptionPane.showMessageDialog(null, "Les données d'une ligne
vient d'être modifié");
actualiser();
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erreur de modification" +
e.getMessage());
System.err.println(e);
}
}
//Bouton Supprimer
private void SupprimerActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (txtID.getText().equals("") ||
comAneAc.getSelectedItem().toString().equals("") ||
txtNomTit.getText().equals("") || txtCours.getText().equals("") ||
txtEtu.getText().equals("") || comPro.getSelectedItem().toString().equals("")
||
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
comDep.getSelectedItem().toString().equals("")||comSess.getSelectedItem().t
oString().equals("")||txtCote.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP entrez les données
à supprimer");
} else if (txtID.getText().length() != 0) {
if (JOptionPane.showConfirmDialog(null, "Attention vous allez
supprimer une ligne, est-ce que vous êtes sure !", "Suppression produit",
JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION);
stm.executeUpdate("Delete From tblcourssession Where
idCoursSession=" + txtID.getText());
JOptionPane.showMessageDialog(null, "Une ligne vient d'être
supprimé de la liste");
actualiser();
} else {
JOptionPane.showMessageDialog(null, "Veuillez SVP remplir le
Champ N° TABLE !");
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erreur de suppresion" +
e.getMessage());
}
}
//Bouton Recherche
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
model.setRowCount(0);//Pour vider la le JTable
if (txtrech.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP entrez quelque
chose");
actualiser();
} else if (comrech.getSelectedItem().equals("N° TABLE")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
idCoursSession='" + txtrech.getText() + "'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
} else if (comrech.getSelectedItem().equals("ANNEE ACAD")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
fldAnneeAcademique LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
model.addRow(tblcourssession);
}
} else if (comrech.getSelectedItem().equals("NOM TITUL")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
fldNomTitulaire LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
} else if (comrech.getSelectedItem().equals("N° COURS")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
fldCours LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
} else if (comrech.getSelectedItem().equals("N° ETUDIANT")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
fiEtudiant LIKE '%" + txtrech.getText() + "%'");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
} else if (comrech.getSelectedItem().equals("PROMOTION")) {
rs = stm.executeQuery("SELECT * FROM tbletudiantcours WHERE
fldPromotion LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
}else if (comrech.getSelectedItem().equals("DEPARTEMENT")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
fldDepartement LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
}else if (comrech.getSelectedItem().equals("SESSION")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
fldSession LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
}else if (comrech.getSelectedItem().equals("COTE")) {
rs = stm.executeQuery("SELECT * FROM tblcourssession WHERE
fldCote LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tblcourssession = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getInt(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getDouble(9)
};
model.addRow(tblcourssession);
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erreur de recherche" +
e.getMessage());
}
}
Formulaire IdentiteEtudiant
Les codes :
package Application_Formulaire;
import Application_Connexion.Connecter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
import javax.swing.table.DefaultTableModel;
public class IdentiteEtudiant extends javax.swing.JFrame {
//Création d'objets des classe importées
Connecter conn = new Connecter();
Statement stm;
ResultSet rs;
DefaultTableModel model = new DefaultTableModel();
public IdentiteEtudiant() {
initComponents();
model.addColumn("N° D'ORDRE");
model.addColumn("NOM");
model.addColumn("POSTNOM");
model.addColumn("PRENOM");
model.addColumn("DATE DE NAISS.");
model.addColumn("TELEPHONE");
model.addColumn("ADRESSE");
try {
stm = conn.obtenirConnexion().createStatement();
rs = stm.executeQuery("Select * From tbletudiant Order By idEtudiant
ASC");
while (rs.next()) {
model.addRow(new Object[]{rs.getInt("idEtudiant"),
rs.getString("fldNom"), rs.getString("fldPostNom"),
rs.getString("fldPrenom"), rs.getString("fldDateNaissance"),
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getString("fldTelephone"), rs.getString("fldAdresse")
});
}
} catch (SQLException e) {
System.err.println(e);
tbletudiant.setModel(model);
//Code pour faire de déplacement dans le Jtable
private void deplace(int i) {
try {
txtetId.setText(model.getValueAt(i, 0).toString());
txtNom.setText(model.getValueAt(i, 1).toString());
txtPost.setText(model.getValueAt(i, 2).toString());
txtPre.setText(model.getValueAt(i, 3).toString());
txtNaiss.setText(model.getValueAt(i, 4).toString());
txtTel.setText(model.getValueAt(i, 5).toString());
txtAdres.setText(model.getValueAt(i, 6).toString());
} catch (Exception e) {
System.err.println(e);
JOptionPane.showMessageDialog(null, "Erreur de deplacement" +
e.getLocalizedMessage());
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
//Code click sur Jtable en relation avec les Textfields
private void tbletudiantMouseClicked(java.awt.event.MouseEvent evt) {
try {
int i = tbletudiant.getSelectedRow();
deplace(i);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erreur de deplacement" +
e.getLocalizedMessage());
}
}
//Méthode pour actualiser les JtextField
void actualiser() {
txtetId.setText("");
txtNom.setText("");
txtPost.setText("");
txtPre.setText("");
txtNaiss.setText("");
txtTel.setText("");
txtAdres.setText("");
txtrech.setText("");
try {
model.setRowCount(0);//Pour vider le JTable avant la mise à jour
stm = conn.obtenirConnexion().createStatement();
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs = stm.executeQuery("Select * from tbletudiant");
while (rs.next()) {
model.addRow(new Object[]{rs.getInt("idEtudiant"),
rs.getString("fldNom"), rs.getString("fldPostNom"),
rs.getString("fldPrenom"), rs.getString("fldDateNaissance"),
rs.getString("fldTelephone"), rs.getString("fldAdresse")
});
} catch (SQLException e) {
System.err.println(e);
}
tbletudiant.setModel(model);
}
//Bouton Ajouter
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String id = txtetId.getText();
String nom = txtNom.getText();
String postnom = txtPost.getText();
String prenom = txtPre.getText();
String naiss = txtNaiss.getText();
String telephone = txtTel.getText();
String adresse = txtAdres.getText();
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
String requete;
requete = "Insert Into tbletudiant(idEtudiant, fldNom, fldPostnom,
fldPrenom, fldDateNaissance, fldTelephone, fldAdresse) Values('" + id + "', '"
+ nom + "', '" + postnom + "', '" + prenom + "','" + naiss + "', '" + telephone
+ "', '" + adresse + "')";
try {
if (txtetId.getText().equals("") ||txtNom.getText().equals("")
|| txtPost.getText().equals("") || txtPre.getText().equals("")
|| txtNaiss.getText().equals("") || txtTel.getText().equals("")
|| txtAdres.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP veuillez remplir les
champs d'entrées, tous !");
} else {
stm = conn.obtenirConnexion().createStatement();
stm.executeUpdate(requete);
JOptionPane.showMessageDialog(null, "L'Etudiant est bien
ajouté");
actualiser();
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
//Bouton Supprimer
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (txtetId.getText().equals("") || txtNom.getText().equals("") ||
txtPost.getText().equals("") || txtPre.getText().equals("") ||
txtNaiss.getText().equals("") || txtTel.getText().equals("") ||
txtAdres.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP entrez les données
à supprimer");
} else if (txtetId.getText().length() != 0) {
if (JOptionPane.showConfirmDialog(null, "Attention vous allez
supprimer un étudiant, est-ce que vous êtes sure !", "Suppression produit",
JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION);
stm.executeUpdate("Delete From tbletudiant Where
idEtudiant=" + txtetId.getText());
JOptionPane.showMessageDialog(null, "Un étudiant vient d'être
supprimé de la liste");
actualiser();
} else {
JOptionPane.showMessageDialog(null, "Veuillez SVP remplir le
Champ N° ETUDIANT !");
}
} catch (SQLException e) {
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
JOptionPane.showMessageDialog(null, "Erreur de suppresion" +
e.getMessage());
//Bouton Modifier
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (txtetId.getText().equals("") || txtNom.getText().equals("")
|| txtPost.getText().equals("")
|| txtPre.getText().equals("")
|| txtNaiss.getText().equals("")
|| txtTel.getText().equals("")
|| txtAdres.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP entrez les données
à modifier");
} else if (JOptionPane.showConfirmDialog(null, "Confirmez-vous la
modification", "Modification", JOptionPane.YES_NO_OPTION) ==
JOptionPane.OK_OPTION) {
stm.executeUpdate("UPDATE tbletudiant SET fldNom='" +
txtNom.getText() + "', fldPostnom='" + txtPost.getText() + "', fldPrenom='" +
txtPre.getText() + "',fldDateNaissance='"+txtNaiss.getText()+"'
,fldTelephone='" + txtTel.getText() + "', fldAdresse='" + txtAdres.getText() +
"' WHERE idEtudiant=" + txtetId.getText());
JOptionPane.showMessageDialog(null, "Les données d'un
étudiant vient d'être modifié");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
actualiser();
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erreur de modification" +
e.getMessage());
System.err.println(e);
}
}
//Bouton Actualiser
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
actualiser();
//Bouton Recherche
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
try {
model.setRowCount(0);//Pour vider le JTable
if (txtrech.getText().equals("")) {
JOptionPane.showMessageDialog(this, "SVP entrez quelque
chose");
actualiser();
} else if (comrech.getSelectedItem().equals("N° ETUDIANT")) {
rs = stm.executeQuery("SELECT * FROM tbletudiant WHERE
idEtudiant='" + txtrech.getText() + "'");
while (rs.next()) {
Object[] tbletudiant = {
rs.getInt(1), rs.getString(2), rs.getString(3),
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7)
};
model.addRow(tbletudiant);
}
} else if (comrech.getSelectedItem().equals("NOM")) {
rs = stm.executeQuery("SELECT * FROM tbletudiant WHERE
fldNom LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tbletudiant = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7)
};
model.addRow(tbletudiant);
}
} else if (comrech.getSelectedItem().equals("POSTNOM")) {
rs = stm.executeQuery("SELECT * FROM tbletudiant WHERE
fldPostNom LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tbletudiant = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7)
};
model.addRow(tbletudiant);
}
} else if (comrech.getSelectedItem().equals("PRENOM")) {
rs = stm.executeQuery("SELECT * FROM tbletudiant WHERE
fldPrenom LIKE '%" + txtrech.getText() + "%'");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
while (rs.next()) {
Object[] tbletudiant = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7)
};
model.addRow(tbletudiant);
}
} else if (comrech.getSelectedItem().equals("DATE DE NAISSANCE"))
{
rs = stm.executeQuery("SELECT * FROM tbletudiant WHERE
fldDateNaissance LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tbletudiant = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7)
};
model.addRow(tbletudiant);
}
} else if (comrech.getSelectedItem().equals("TELEPHONE")) {
rs = stm.executeQuery("SELECT * FROM tbletudiant WHERE
fldTelephone LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tbletudiant = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7)
};
model.addRow(tbletudiant);
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
}else if (comrech.getSelectedItem().equals("ADRESSE")) {
rs = stm.executeQuery("SELECT * FROM tbletudiant WHERE
fldAdresse LIKE '%" + txtrech.getText() + "%'");
while (rs.next()) {
Object[] tbletudiant = {
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7)
};
model.addRow(tbletudiant);
}
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erreur de recherche" +
e.getMessage());
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
7.3. APPLICATION : GESTION BIBLIOTHEQUE
Dans ce petit projet, nous allons utiliser le JDBC Microsoft Access.
7.3.1. Création de la base de données
Structure de la table tblOuvrage
Structure de la table tblVisiteur
La relation entre table se fait comme ceci :
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
7.3.2. Création de l’application JAVA
Pour ce faire, nous allons créer quatre classes :
- La classe Connecter : cette classe sera le point d’échange entre
l’application et la base de données.
- La classe Accueil : le point d’entrée de notre application via un mot de
passe.
- La classe Ouvrage : la classe qui présentera la table tblOuvrage dans
notre application.
- La classe Visiteur : la classe qui présentera la table tblVisiteur dans
notre application.
- La classe SitiationEmprunt : la classe qui va présenter les différentes
requêtes relatives à notre base de données telle que la recherche de
Visiteurs n’ayant pas remis encore les ouvrages à la bibliothèque.
7.3.2.1. Code pour la Classe Connecter
package Application;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Connecter {
Connection con;
public Connecter(){
try{
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
System.out.println("Le Driver fonctionne !");
}catch(ClassNotFoundException e){
System.err.println(e);
}
try{
con=DriverManager.getConnection("jdbc:ucanaccess://D://databaseMwania.ac
cdb");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
System.out.println("La connexion à la base de données a réussi !");
}catch(SQLException e){
System.err.println(e);
}
}
public Connection obtenirConnexion(){
return con;
}
}
7.3.2.2. Code pour la Classe Accueil
Commande Login
//Bouton LOGIN
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String pass;
pass=password.getText();
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
if (pass.equals("20192020")) {
JOptionPane.showMessageDialog(null, "Accès autorisé !");
Visiteur v=new Visiteur();
v.setVisible(true);
this.dispose();
}else{
JOptionPane.showMessageDialog(null, "Password incorrect !");
}
}
Commande Quitter
//Bouton Quitter
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}
7.3.2.3. Code pour la Classe Ouvrage
package BaseDeDonnees;
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
import Application.Connecter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class Ouvrage extends javax.swing.JFrame {
Connecter conn=new Connecter();
Statement stm;
ResultSet rs;
DefaultTableModel model=new DefaultTableModel();
public Ouvrage() {
initComponents();
model.addColumn("N°OUVRAGE");
model.addColumn("MAT. ETUDIANT");
model.addColumn("DATE EMPRUNT");
model.addColumn("TITRE OUVRAGE");
model.addColumn("DATE DE REMISE");
model.addColumn("OBSERVATION");
try{
stm=conn.obtenirConnexion().createStatement();
rs=stm.executeQuery("Select * From tblOuvrage");
while(rs.next()){
model.addRow(new Object[]{rs.getInt("idNumeroOuvrage"),
rs.getString("fiMatricule"), rs.getString("fldDateEmprunt"),
rs.getString("fldTitreOuvrage"), rs.getString("fldDateDeRemise"),
rs.getString("fldObservation")
});
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}catch(SQLException e){
System.err.println(e);
}
tblOuvrage.setModel(model);
}
//Code déplacement
private void deplace(int i){
try{
txtOuvrage.setText(model.getValueAt(i,0).toString());
txtMat.setText(model.getValueAt(i,1).toString());
txtDateEmp.setText(model.getValueAt(i,2).toString());
txtTiOuvrage.setText(model.getValueAt(i,3).toString());
txtDaRem.setText(model.getValueAt(i,4).toString());
combObserv.setSelectedItem(model.getValueAt(i, 5));
}catch(Exception e){
System.err.println(e);
JOptionPane.showMessageDialog(null, "Erreur de deplacement"+
e.getLocalizedMessage());
}
}
//Table visiteur click
private void tblOuvrageMouseClicked(java.awt.event.MouseEvent evt) {
try{
int i =tblOuvrage.getSelectedRow();
deplace(i);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Erreur de deplacement"+
e.getLocalizedMessage());
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
}
//Méthode actualiser
void actualiser(){
txtOuvrage.setText("");
txtMat.setText("");
txtDateEmp.setText("");
txtTiOuvrage.setText("");
txtDaRem.setText("");
combObserv.setSelectedItem("");
try{
model.setRowCount(0);//Pour vider le JTable avant la mise à jour
stm=conn.obtenirConnexion().createStatement();
rs=stm.executeQuery("Select * From tblOuvrage");
while(rs.next()){
model.addRow(new Object[]{rs.getInt("idNumeroOuvrage"),
rs.getInt("fiMatricule"), rs.getString("fldDateEmprunt"),
rs.getString("fldTitreOuvrage"), rs.getString("fldDateDeRemise"),
rs.getString("fldObservation")
});
}
}catch(SQLException e){
System.err.println(e);
}
tblOuvrage.setModel(model);
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
//Bouton Ajouter
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
String id=txtOuvrage.getText();
String mat=txtMat.getText();
String dateEmp=txtDateEmp.getText();
String TiOuv=txtTiOuvrage.getText();
String dateRem=txtDaRem.getText();
String Obs=combObserv.getSelectedItem().toString();
String requete;
requete="Insert Into tblOuvrage(idNumeroOuvrage, fiMatricule,
fldDateEmprunt, fldTitreOuvrage, fldDateDeRemise, fldObservation)
Values('"+id+"', '"+mat+"', '"+dateEmp+"', '"+TiOuv+"', '"+dateRem+"',
'"+Obs+"')";
try{
if(txtOuvrage.getText().equals("") || txtMat.getText().equals("") ||
txtDateEmp.getText().equals("") ||
txtTiOuvrage.getText().equals("") ||
txtDaRem.getText().equals("") ||
combObserv.getSelectedItem().equals(""))
{
JOptionPane.showMessageDialog(this, "SVP veuillez remplir les
champs d'entrées, tous !");
}else{
stm=conn.obtenirConnexion().createStatement();
stm.executeUpdate(requete);
JOptionPane.showMessageDialog(null, "L'ouvrage est bien
ajouté");
actualiser();
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
//Bouton Modifier
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(txtOuvrage.getText().equals("") || txtMat.getText().equals("") ||
txtDateEmp.getText().equals("") ||
txtTiOuvrage.getText().equals("") ||
txtDaRem.getText().equals("") ||
combObserv.getSelectedItem().equals("")){
JOptionPane.showMessageDialog(this, "SVP entrez les données à
modifier");
}else if(JOptionPane.showConfirmDialog(null, "Confirmez-vous la
modification", "Modification",
JOptionPane.YES_NO_OPTION)==JOptionPane.OK_OPTION){
stm.executeUpdate("UPDATE tblOuvrage SET
fiMatricule='"+txtMat.getText()+"',
fldDateEmprunt='"+txtDateEmp.getText()+"',
fldTitreOuvrage='"+txtTiOuvrage.getText()+"',
fldDateDeRemise='"+txtDaRem.getText()+"',
fldObservation='"+combObserv.getSelectedItem()+"' WHERE
idNumeroOuvrage="+txtOuvrage.getText());
JOptionPane.showMessageDialog(null, "Un Ouvrage vient d'être
modifié");
actualiser();
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Erreur de modification"+
e.getMessage());
System.err.println(e);
}
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
//Bouton Supprimer
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(txtOuvrage.getText().equals("") || txtMat.getText().equals("") ||
txtDateEmp.getText().equals("") ||
txtTiOuvrage.getText().equals("") ||
txtDaRem.getText().equals("") ||
combObserv.getSelectedItem().equals("")){
JOptionPane.showMessageDialog(this, "SVP entrez les données à
supprimer");
}else if(txtOuvrage.getText().length()!=0){
if(JOptionPane.showConfirmDialog(null, "Attention vous allez
supprimer un Ouvrage, est-ce que vous êtes sure !", "Suppression Ouvrage",
JOptionPane.YES_NO_OPTION)==JOptionPane.OK_OPTION);
stm.executeUpdate("Delete From tblOuvrage Where
idNumeroOuvrage="+txtOuvrage.getText());
JOptionPane.showMessageDialog(null, "Un Ouvrage vient d'être
supprimé de la liste");
actualiser();
}else{
JOptionPane.showMessageDialog(null, "Veuillez SVP remplir le
Champ Numéro Ouvrage !");
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erreur de suppresion"
+e.getMessage());
}
}
//Bouton actualiser
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
actualiser();
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
//Bouton Recherche
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
model.setRowCount(0);//Pour vider la le JTable
if(txtrech.getText().equals("")){
JOptionPane.showMessageDialog(this, "SVP entrez quelque
chose");
actualiser();
}else if(comrech.getSelectedItem().equals("NUMERO_OUVRAGE")){
rs=stm.executeQuery("SELECT * FROM tblOuvrage WHERE
idNumeroOuvrage='"+txtrech.getText()+"'");
while(rs.next()){
Object[] tblOuvrage={
rs.getInt(1), rs.getInt(2), rs.getDate(3),
rs.getString(4), rs.getDate(5), rs.getString(6),
};
model.addRow(tblOuvrage);
}
}else if(comrech.getSelectedItem().equals("MATRICULE")){
rs=stm.executeQuery("SELECT * FROM tblOuvrage WHERE
fiMatricule LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblOuvrage={
rs.getInt(1), rs.getInt(2), rs.getDate(3),
rs.getString(4), rs.getDate(5), rs.getString(6),
};
model.addRow(tblOuvrage);
}
}else if(comrech.getSelectedItem().equals("DATE_EMPRUNT")){
rs=stm.executeQuery("SELECT * FROM tblOuvrage WHERE
fldDateEmprunt LIKE '%"+txtrech.getText()+"%'");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
while(rs.next()){
Object[] tblOuvrage={
rs.getInt(1), rs.getInt(2), rs.getDate(3),
rs.getString(4), rs.getDate(5), rs.getString(6),
};
model.addRow(tblOuvrage);
}
}else if(comrech.getSelectedItem().equals("TITRE_OUVRAGE")){
rs=stm.executeQuery("SELECT * FROM tblOuvrage WHERE
fldTitreOuvrage LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblOuvrage={
rs.getInt(1), rs.getInt(2), rs.getDate(3),
rs.getString(4), rs.getDate(5), rs.getString(6),
};
model.addRow(tblOuvrage);
}
}else if(comrech.getSelectedItem().equals("DATE_DE_REMISE")){
rs=stm.executeQuery("SELECT * FROM tblOuvrage WHERE
fldDateDeRemise LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblOuvrage={
rs.getInt(1), rs.getInt(2), rs.getDate(3),
rs.getString(4), rs.getDate(5), rs.getString(6),
};
model.addRow(tblOuvrage);
}
}else if(comrech.getSelectedItem().equals("OBSERVATION")){
rs=stm.executeQuery("SELECT * FROM tblOuvrage WHERE
fldObservation LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Object[] tblOuvrage={
rs.getInt(1), rs.getInt(2), rs.getDate(3),
rs.getString(4), rs.getDate(5), rs.getString(6),
};
model.addRow(tblOuvrage);
}
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erreur de recherche"
+e.getMessage());
}
}
7.3.2.4. Code pour la Classe Visiteur
package BaseDeDonnees;
import Application.Connecter;
import java.sql.ResultSet;
import java.sql.SQLException;
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class Visiteur extends javax.swing.JFrame {
Connecter conn=new Connecter();
Statement stm;
ResultSet rs;
DefaultTableModel model=new DefaultTableModel();
public Visiteur() {
initComponents();
model.addColumn("MATRICULE");
model.addColumn("NOM");
model.addColumn("POSTNOM");
model.addColumn("DATE DE NAISSANCE");
model.addColumn("ETAT CIVIL");
model.addColumn("SEXE");
model.addColumn("FACULTE");
model.addColumn("DEPARTEMENT");
model.addColumn("PROMOTION");
model.addColumn("ADRESSE");
model.addColumn("ANNEE ACADEMIQUE");
try{
stm=conn.obtenirConnexion().createStatement();
rs=stm.executeQuery("Select * From tblVisiteur");
while(rs.next()){
model.addRow(new Object[]{rs.getInt("idMatricule"),
rs.getString("fldNom"), rs.getString("fldPostNom"),
rs.getString("fldDateDeNaissance"), rs.getString("fldEtatCivil"),
rs.getString("fldSexe"),rs.getString("fldFaculte"),
rs.getString("fldDepartement"),
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getString("fldPromotion"), rs.getString("fldAdresse"),
rs.getString("fldAnneeAcademique")
});
}
}catch(SQLException e){
System.err.println(e);
}
tblvisiteur.setModel(model);
}
//Code Déplacement
private void deplace(int i){
try{
txtMat.setText(model.getValueAt(i,0).toString());
txtNo.setText(model.getValueAt(i,1).toString());
txtPost.setText(model.getValueAt(i,2).toString());
txtDa.setText(model.getValueAt(i,3).toString());
txtEt.setText(model.getValueAt(i,4).toString());
combSe.setSelectedItem(model.getValueAt(i, 5));
txtFa.setText(model.getValueAt(i,6).toString());
txtDep.setText(model.getValueAt(i,7).toString());
txtProm.setText(model.getValueAt(i,8).toString());
txtAdres.setText(model.getValueAt(i,9).toString());
txtAn.setText(model.getValueAt(i,10).toString());
}catch(Exception e){
System.err.println(e);
JOptionPane.showMessageDialog(null, "Erreur de deplacement"+
e.getLocalizedMessage());
}
}
//Table visiteur click
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
private void tblvisiteurMouseClicked(java.awt.event.MouseEvent evt) {
try{
int i =tblvisiteur.getSelectedRow();
deplace(i);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Erreur de deplacement"+
e.getLocalizedMessage());
}
}
//Bouton Ajouter
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String id=txtMat.getText();
String nom=txtNo.getText();
String postnom=txtPost.getText();
String datenai=txtDa.getText();
String etatciv=txtEt.getText();
String sexe=combSe.getSelectedItem().toString();
String fa=txtFa.getText();
String dep=txtDep.getText();
String prom=txtProm.getText();
String adres=txtAdres.getText();
String ann=txtAn.getText();
String requete;
requete="Insert Into tblVisiteur(idMatricule, fldNom, fldPostNom,
fldDateDeNaissance, fldEtatCivil, fldSexe, fldFaculte, fldDepartement,
fldPromotion, fldAdresse, fldAnneeAcademique) Values('"+id+"', '"+nom+"',
'"+postnom+"', '"+datenai+"', '"+etatciv+"', '"+sexe+"', '"+fa+"', '"+dep+"',
'"+prom+"', '"+adres+"', '"+ann+"')";
try{
if(txtMat.getText().equals("") || txtNo.getText().equals("") ||
txtPost.getText().equals("") || txtDa.getText().equals("") ||
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
txtEt.getText().equals("") || combSe.getSelectedItem().equals("")||
txtFa.getText().equals("") || txtDep.getText().equals("") ||
txtProm.getText().equals("") || txtAdres.getText().equals("") ||
txtAn.getText().equals(""))
{
JOptionPane.showMessageDialog(this, "SVP veuillez remplir les
champs d'entrées, tous !");
}else{
stm=conn.obtenirConnexion().createStatement();
stm.executeUpdate(requete);
JOptionPane.showMessageDialog(null, "Le Visiteur est bien
ajouté");
actualiser();
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
//Bouton modifier
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(txtMat.getText().equals("") || txtNo.getText().equals("") ||
txtPost.getText().equals("") || txtDa.getText().equals("") ||
txtEt.getText().equals("") || combSe.getSelectedItem().equals("")||
txtFa.getText().equals("") || txtDep.getText().equals("") ||
txtProm.getText().equals("") || txtAdres.getText().equals("") ||
txtAn.getText().equals("")){
JOptionPane.showMessageDialog(this, "SVP entrez les données à
modifier");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}else if(JOptionPane.showConfirmDialog(null, "Confirmez-vous la
modification", "Modification",
JOptionPane.YES_NO_OPTION)==JOptionPane.OK_OPTION){
stm.executeUpdate("UPDATE tblVisiteur SET
fldNom='"+txtNo.getText()+"', fldPostNom='"+txtPost.getText()+"',
fldDateDeNaissance='"+txtDa.getText()+"', fldEtatCivil='"+txtEt.getText()+"',
fldSexe='"+combSe.getSelectedItem()+"', fldFaculte='"+txtFa.getText()+"',
fldDepartement='"+txtDep.getText()+"',
fldPromotion='"+txtProm.getText()+"', fldAdresse='"+txtAdres.getText()+"',
fldAnneeAcademique='"+txtAn.getText()+"' WHERE
idMatricule="+txtMat.getText());
JOptionPane.showMessageDialog(null, "Un Visiteur vient d'être
modifié");
actualiser();
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Erreur de modification"+
e.getMessage());
System.err.println(e);
}
}
//Bouton supprimer
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(txtMat.getText().equals("") || txtNo.getText().equals("") ||
txtPost.getText().equals("") || txtDa.getText().equals("") ||
txtEt.getText().equals("") || combSe.getSelectedItem().equals("")||
txtFa.getText().equals("")|| txtDep.getText().equals("")||
txtProm.getText().equals("")|| txtAdres.getText().equals("")||
txtAn.getText().equals("")){
JOptionPane.showMessageDialog(this, "SVP entrez les données à
supprimer");
}else if(txtMat.getText().length()!=0){
if(JOptionPane.showConfirmDialog(null, "Attention vous allez
supprimer un Visiteur, est-ce que vous êtes sure !", "Suppression Visiteur",
JOptionPane.YES_NO_OPTION)==JOptionPane.OK_OPTION);
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
stm.executeUpdate("Delete From tblVisiteur Where
idMatricule="+txtMat.getText());
JOptionPane.showMessageDialog(null, "Un Visiteur vient d'être
supprimé de la liste");
actualiser();
}else{
JOptionPane.showMessageDialog(null, "Veuillez SVP remplir le
Champ Matricule Visiteur !");
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erreur de suppresion"
+e.getMessage());
}
}
//Bouton Actualiser
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
actualiser();
}
//Bouton Recherche
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
try{
model.setRowCount(0);//Pour vider la le JTable
if(txtrech.getText().equals("")){
JOptionPane.showMessageDialog(this, "SVP entrez quelque
chose");
actualiser();
}else if(comrech.getSelectedItem().equals("MATRICULE")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
idMatricule='"+txtrech.getText()+"'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("NOM")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE fldNom
LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("POSTNOM")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldPostNom LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}else if(comrech.getSelectedItem().equals("DATE_DE_NAISSANCE")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldDateDeNaissance LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("ETAT_CIVIL")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldEtatCivil LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("SEXE")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE fldSexe
LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("FACULTE")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldFaculte LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("DEPARTEMENT")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldDepartement LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("PROMOTION")){
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldPromotion LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("ADRESSE")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldAdresse LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}else if(comrech.getSelectedItem().equals("ANNEE_ACADEMIQUE")){
rs=stm.executeQuery("SELECT * FROM tblVisiteur WHERE
fldAnneeAcademique LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] tblVisiteur={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getString(7), rs.getString(8), rs.getString(9),
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getString(10), rs.getString(11),
};
model.addRow(tblVisiteur);
}
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erreur de recherche"
+e.getMessage());
}
}
//Bouton Ouverture Formulaire Ouvrage
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
Ouvrage o=new Ouvrage();
o.setVisible(true);
}
//Bouton situation emprunt
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
SituationEmprunt se=new SituationEmprunt();
se.setVisible(true);
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
7.3.2.5. Codes pour la Classe SituationEmprunt
Ici, il faut créer la requête rqtSituationEmprunt dans la base de données :
package BaseDeDonnees;
import Application.Connecter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class SituationEmprunt extends javax.swing.JFrame {
Connecter conn=new Connecter();
Statement stm;
ResultSet rs;
DefaultTableModel model=new DefaultTableModel();
public SituationEmprunt() {
initComponents();
model.addColumn("MATRICULE");
model.addColumn("NOM");
model.addColumn("POSTNOM");
model.addColumn("FACULTE");
model.addColumn("DEPARTEMENT");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
model.addColumn("PROMOTION");
model.addColumn("ANNEE ACADEMIQUE");
model.addColumn("NUMERO OUVRAGE");
model.addColumn("DATE EMPRUNT");
model.addColumn("TITRE OUVRAGE");
model.addColumn("DATE DE REMISE");
model.addColumn("OBSERVATION");
try{
stm=conn.obtenirConnexion().createStatement();
rs=stm.executeQuery("Select * From rqtSituationEmprunt");
while(rs.next()){
model.addRow(new Object[]{rs.getInt("idMatricule"),
rs.getString("fldNom"), rs.getString("fldPostNom"),
rs.getString("fldFaculte"), rs.getString("fldDepartement"),
rs.getString("fldPromotion"),rs.getString("fldAnneeAcademique"),
rs.getString("idNumeroOuvrage"),
rs.getString("fldDateEmprunt"), rs.getString("fldTitreOuvrage"),
rs.getString("fldDateDeRemise"),
rs.getString("fldObservation")
});
}
}catch(SQLException e){
System.err.println(e);
}
tblSituEmp.setModel(model);
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
//Codes d éplacement
private void deplace(int i){
try{
txtMat.setText(model.getValueAt(i,0).toString());
txtNo.setText(model.getValueAt(i,1).toString());
txtPost.setText(model.getValueAt(i,2).toString());
txtFa.setText(model.getValueAt(i,3).toString());
txtDe.setText(model.getValueAt(i,4).toString());
txtPro.setText(model.getValueAt(i,5).toString());
txtAn.setText(model.getValueAt(i,6).toString());
txtNu.setText(model.getValueAt(i,7).toString());
txtDaEmp.setText(model.getValueAt(i,8).toString());
txtTi.setText(model.getValueAt(i,9).toString());
txtDaRem.setText(model.getValueAt(i,10).toString());
txtObs.setText(model.getValueAt(i,11).toString());
}catch(Exception e){
System.err.println(e);
JOptionPane.showMessageDialog(null, "Erreur de deplacement"+
e.getLocalizedMessage());
}
}
//Méthode actualiser
void actualiser(){
txtMat.setText("");
txtNo.setText("");
txtPost.setText("");
txtFa.setText("");
txtDe.setText("");
txtPro.setText("");
txtAn.setText("");
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
txtNu.setText("");
txtDaEmp.setText("");
txtTi.setText("");
txtDaRem.setText("");
txtObs.setText("");
try{
model.setRowCount(0);//Pour vider le JTable avant la mise à jour
stm=conn.obtenirConnexion().createStatement();
rs=stm.executeQuery("Select * From rqtSituationEmprunt");
while(rs.next()){
model.addRow(new Object[]{rs.getInt("idMatricule"),
rs.getString("fldNom"), rs.getString("fldPostNom"),
rs.getString("fldFaculte"), rs.getString("fldDepartement"),
rs.getString("fldPromotion"),rs.getDate("fldAnneeAcademique"),
rs.getInt("idNumeroOuvrage"),
rs.getDate("fldDateEmprunt"), rs.getString("fldTitreOuvrage"),
rs.getDate("fldDateDeRemise"),rs.getString("fldObservation")
});
}
}catch(SQLException e){
System.err.println(e);
}
tblSituEmp.setModel(model);
}
//Bouton Recherche
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
model.setRowCount(0);//Pour vider la le JTable
if(txtrech.getText().equals("")){
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
JOptionPane.showMessageDialog(this, "SVP entrez quelque
chose");
actualiser();
}else if(comrech.getSelectedItem().equals("MATRICULE")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE idMatricule='"+txtrech.getText()+"'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("NOM")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldNom LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("POSTNOM")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldPostNom LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("FACULTE")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldFaculte LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("DEPARTEMENT")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldDepartement LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("PROMOTION")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldPromotion LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("ANNEE ACADEMIQUE")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldAnneeAcademique LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("NUMERO OUVRAGE")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE idNumeroOuvrage LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("DATE EMPRUNT")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt WHERE
fldDateEmprunt LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("TITRE OUVRAGE")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt WHERE
fldTitreOuvrage LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
}
}else if(comrech.getSelectedItem().equals("DATE DE REMISE")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldDateDeRemise LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}else if(comrech.getSelectedItem().equals("OBSERVATION")){
rs=stm.executeQuery("SELECT * FROM rqtSituationEmprunt
WHERE fldObservation LIKE '%"+txtrech.getText()+"%'");
while(rs.next()){
Object[] rqtSituationEmprunt={
rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getString(6),
rs.getDate(7), rs.getInt(8), rs.getDate(9),
rs.getString(10), rs.getDate(11),rs.getString(12)
};
model.addRow(rqtSituationEmprunt);
}
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erreur de recherche"
+e.getMessage());
}
}
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
BIBLIOGRAPHIE
1. Michel Divay, La programmation objet en java, Dunod, Paris 2006.
2. Claude Delannoy, S’initier à la programmation et à l’orienté objet,
Eyrolles, Paris 2016.
3. Juliette Dibie-Barthélémy, Interface graphique en Java API Swing,
Institut National Agronomique Paris-Grignon, mai 2005.
4. P. Haggar, Mieux programmer en Java, Eyrolles, 2004.
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
Table des matières
INTRODUCTION GENERALE ................................................................................................................ 1
CHAPITRE 1 : GENERALITES SUR LE LANGAGE JAVA .................................................................... 2
1.1. Environnement Java ................................................................................................................. 2
1.2. Programmation orientée-objet ................................................................................................ 2
1.2.1. Classe ...................................................................................................................................... 3
1.2.2. Objet Instanciation ................................................................................................................ 5
1.2.3. Accès aux variables et aux méthodes................................................................................. 5
CHAPITRE 2 : SYNTAXE DU LANGAGE .............................................................................................. 7
2.1. Types de données ..................................................................................................................... 7
2.1.1. Tableaux et matrices ............................................................................................................. 8
2.1.2. Chaînes de caractères ........................................................................................................... 8
2.2. Opérateurs ................................................................................................................................. 9
2.3. Structures de contrôle ............................................................................................................ 10
2.3.1. Instructions conditionnelles................................................................................................ 10
2.3.2. Instructions itératives.......................................................................................................... 10
2.3.3. Instructions break et continue ........................................................................................... 12
CHAPITRE 3 : ÉLEMENTS DE PROGRAMMATION JAVA ................................................................ 13
3.1. Premiers pas ............................................................................................................................ 13
3.1.1 Classe HelloWorld ................................................................................................................. 13
3.1.2. Packages ............................................................................................................................... 13
3.2. Variables et méthodes ............................................................................................................ 15
3.2.1. Visibilité des champs ........................................................................................................... 15
3.2.2. Variables et méthodes de classe ....................................................................................... 15
CHAPITRE 4 : HERITAGE ................................................................................................................... 17
4.1. Principe de l’héritage .............................................................................................................. 17
4.1.1. Redéfinition........................................................................................................................... 18
4.1.2. Polymorphisme ..................................................................................................................... 20
4.2. Interfaces ................................................................................................................................. 21
4.3. Classes abstraites .................................................................................................................... 22
4.4. Classes et méthodes génériques .......................................................................................... 24
CHAPITRE 5 : GESTION DES EXCEPTIONS .................................................................................... 26
5.1. Les mots clés try, catch et finally ......................................................................................... 27
5.2. La classe Throwable ............................................................................................................... 28
5.3. Les classes Exception, RunTimeException et Error............................................................ 29
CHAPITRE 6 : NOTIONS SUR LES APPLICATIONS GRAPHIQUES ............................................... 30
6.1. Généralité ................................................................................................................................. 30
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob
6.2. Le WindowBuilder ................................................................................................................... 30
6.3. Les boîtes des dialogue-JOptionPane................................................................................... 31
CHAPITRE 7 : JAVA ET LES BASES DE DONNEES ......................................................................... 36
7.1. LE JAVA DATABASE CONNECTIVITY (JDBC) ................................................................................... 36
7.1.1. Présentation ............................................................................................................................. 36
7.1.2. Schéma.................................................................................................................................. 36
7.1.3. Interfaces de JDBC ................................................................................................................ 37
7.1.4. Architecture d’une application JDBC ..................................................................................... 37
7.1.5. Connexion à une base de données .......................................................................................... 38
7.1.6. Les requêtes de sélection ......................................................................................................... 38
7.1.7. Les requêtes de mises à jour ................................................................................................ 39
7.1.8. Déconnexion ........................................................................................................................... 41
7.1.9. Exemple complet .................................................................................................................... 42
7.1.9.1 .Création de la base de données ........................................................................................ 42
7.1.9.2. Création de l’application java manipulant la base de données ........................................ 42
7.2.1. Création de la base de données gestioncoteeconomie dans phpMyAdmin ................ 48
7.2.2. Création de l’application JAVA ........................................................................................... 50
7.3. APPLICATION : GESTION BIBLIOTHEQUE.............................................................................. 77
7.3.1. CREATION DE LA BASE DE DONNEES ............................................................................. 77
7.3.2. Création de l’application JAVA ........................................................................................... 78
7.3.2.1. Code pour la Classe Connecter ...................................................................................... 78
7.3.2.2. Code pour la Classe Accueil ............................................................................................ 79
7.3.2.3. Code pour la Classe Ouvrage ......................................................................................... 80
7.3.2.4. Code pour la Classe Visiteur ........................................................................................... 89
7.3.2.5. Codes pour la Classe SituationEmprunt ...................................................................... 101
BIBLIOGRAPHIE ................................................................................................................................ 110
Ass. Ir. A0 Génie Télécoms LUFUNGULA HERO MUMBAR Bob