SlideShare ist ein Scribd-Unternehmen logo
1 von 10
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 1 ~
Accès aux bases de données via JDBC
Plan
1. Architectures d’une application :......................................................................................... 2
2. Pilotes JDBC....................................................................................................................... 2
3. Créer une application JDBC................................................................................................. 3
4. Démarche JDBC.................................................................................................................. 3
Charger les pilotes JDBC : ....................................................................................................... 3
5. Créer une connexion.......................................................................................................... 4
6. Objets Statement, ResultSetet ResultSetMetaData.............................................................. 4
7. Objet PreparedStatement................................................................................................... 5
8. Récupérerles données d’un ResultSet................................................................................. 5
9. Exploitation de l’objet ResultSetMetaData........................................................................... 6
10. Mapping objet relationnel .............................................................................................. 6
11. Architecture d’une application........................................................................................ 7
12. Mapping objet relationnel .............................................................................................. 7
Couche Métier : Mapping objet relationnel............................................................................. 7
Application............................................................................................................................ 8
Couche métier : la classe persistante Etudiant.java.................................................................. 9
Couche métier : la classe Scolarite.java ................................................................................... 9
Couche Présentation : Applications Simple.............................................................................10
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 2 ~
1. Architectures d’une application :
2. Pilotes JDBC
 Pour qu’une application java puisse communiquer avec
un serveur de bases de données, elle a besoin d’utiliser
les pilotes JDBC (Java Data Base Connectivity)
 Les Pilotes JDBC est une bibliothèque de classes java
qui permet, à une application java, de communiquer
avec un SGBD via le réseau en utilisant le protocole
TCP/IP
 Chaque SGBD possède ses propres pilotes JDBC.
 Il existe un pilote particulier « JdbcOdbcDriver » qui
permet à une application java communiquer avec
n’importe quelle source de données via les pilotes
ODBC (Open Data Base Connectivity)
 Les pilotes ODBC permettent à une application
Windows de communiquer une base de données
quelconque (Access, Excel, MySQL, Oracle, SQL SERVER
SGBD
Client http
 Html, css, JavaScript
 XML, AJAX, JQUERY, Spry
 SVG ou Flash
 Application Java (Swing)
 Smart Phone
 Application .Net
 Application PHP
 Serveur de messagerie
 Client SMS
SERVEUR D’APPLICATION J2EE
Couche DAO
JPA, Hibernate
Couche Métier
Couche web
 Struts
 Spring
 JSF
Couche Service
- RMI
- CORBA
- EJB Session
- SOAP
- JMS
- Java Mail
- SMSLib
- …
JDBC
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 3 ~
etc…)
 La bibliothèque JDBC a été conçu comme interface pour l’exécution de requêtes SQL.
 Une application JDBC est isolée des caractéristiques particulières du système de base
de données utilisé.
3. Créer une application JDBC
Pour créer une application élémentaire de manipulation d’une base de données il faut suivre
les étapes suivantes :
 Chargement du Pilote JDBC ;
 Identification de la source de données ;
 Allocation d’un objet Connection
 Allocation d’un objet Instruction Statement (ou PreparedStatement);
 Exécution d’une requête à l’aide de l’objet Statement ;
 Récupération de données à partir de l’objet renvoyé ResultSet ;
 Fermeture de l’objet ResultSet ;
 Fermeture de l’objet Statement ;
 Fermeture de l’objet Connection.
4. Démarche JDBC
Charger les pilotes JDBC :
Utiliser la méthode « forName » de la classe « Class », en précisant le nom de la classe
pilote.
Exemples:
Pour charger le pilote JdbcOdbcDriver:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
Connection
createStatement()
DriverManager
getConnection()
ResultSet
getResultSetMetaData()
Statement
executeQuery()
ResulSetMetaDa
ta
Pilote JDBC
Base de
données
Lien SQL Données Structures
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 4 ~
Pour charger le pilote jdbc de MySQL:
Class.forName("com.mysql.jdbc.Driver");
5. Créer une connexion
Pour créer une connexion à une base de données, il faut utiliser la méthode statique
getConnection() de la classe DriverManager. Cette méthode fait appel aux pilotes JDBC pour
établir une connexion avec le SGBDR, en utilisant les sockets.
Pour un pilote com.mysql.jdbc.Driver :
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/DB", "user", "pass" );
Pour un pilote sun.jdbc.odbc.JdbcOdbcDriver :
Connection conn = DriverManager.getConnection
("jdbc:odbc:dsnSCO", "user", "pass" );
6. Objets Statement, ResultSet et ResultSetMetaData
Pour exécuter une requête SQL, on peut créer l’objet Statement en utilisant la méthode
createStatement() de l’objet Connection.
Syntaxte de création de l’objet Statement
Statement st = conn.createStatement();
Exécution d’une requête SQL avec l’objet Statement :
Pour exécuter une requête SQL de type select, on peut utiliser la méthode executeQuery()
de l’objet Statement. Cette méthode exécute la requête et stocke le résultat de la requête
dans l’objet ResultSet:
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 5 ~
ResultSet rs=st.executeQuery("select * from PRODUITS");
Pour exécuter une requête SQL de type insert, update et delete on peut utiliser la méthode
executeUpdate() de l’objet Statement :
st.executeUpdate("insert into PRODUITS (…) values(…)");
Pour récupérer la structure d’une table, il faut créer l’objet ResultSetMetaData en utilisant la
méthode getMetaData() de l’objet Resultset.
ResultSetMetaData rsmd = rs.getMetaData();
7. Objet PreparedStatement
Pour exécuter une requête SQL, on peut également créer l’objet PreparedStatement en
utilisant la méthode prepareStatement() de l’objet Connection.
Syntaxte de création de l’objet PreparedStatement
PreparedStatement ps=conn.prepareStatement("select *
from PRODUITS where NOM_PROD like ? AND PRIX<?");
Définir les valeurs des paramètres de la requête:
ps.setString(1,"%"+motCle+"%");
ps.setString(2, p);
Exécution d’une requête SQL avec l’objet PreparedStatement :
Pour exécuter une requête SQL de type select, on peut utiliser la méthode executeQuery()
de l’objet Statement. Cette méthode exécute la requête et stocke le résultat de la requête
dans l’objet ResultSet:
ResultSet rs=ps.executeQuery();
Pour exécuter une requête SQL de type insert, update et delete on peut utiliser la méthode
executeUpdate() de l’objet Statement :
ps.executeUpdate();
8. Récupérer les données d’un ResultSet
Pour parcourir un ResultSet, on utilise sa méthode next() qui permet de passer d’une ligne à
l’autre. Si la ligne suivante existe, la méthode next() retourne true. Si non elle retourne false.
Pour récupérer la valeur d’une colonne de la ligne courante du ResultSet, on peut utiliser les
méthodes getInt(colonne), getString(colonne), getFloat(colonne), getDouble(colonne),
getDate(colonne), etc… colonne représente le numéro ou le nom de la colonne de la ligne
courante.
Syntaxte:
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 6 ~
while(rs.next()){
System.out.ptintln(rs.getInt(1));
System.out.ptintln(rs.getString("NOM_PROD"));
System.out.ptintln(rs.getDouble("PRIX"));
}
9. Exploitation de l’objet ResultSetMetaData
L’objet ResultSetMetaData est très utilsé quand on ne connait pas la structure d’un
ResultSet. Avec L’objet ResultSetMetaData, on peut connaitre le nombre de colonnes du
ResultSet, le nom, le type et la taille de chaque colonne.
Pour afficher, par exemple, le nom, le type et la taille de toutes les colonnes d’un ResultSet
rs, on peut écrire le code suivant:
ResultSetMetaData rsmd=rs.getMetaData();
// Parcourir toutes les colonnes
for(int i=0;i<rsmd.getColumnCount();i++){
// afficher le nom de la colonne numéro i
System.out.println(rsmd.getColumnName(i));
// afficher le type de la colonne numéro i
System.out.println(rsmd.getColumnTypeName(i));
// afficher la taille de la colonne numéro i
System.out.println(rsmd.getColumnDisplaySize(i));
}
// Afficher tous les enregistrements du ResultSet rs
while (rs.next()){
for(int i=0;i<rsmd.getColumnCount();i++){
System.out.println(rs.getString(i));
}
}
10. Mapping objet relationnel
Dans la pratique, on cherche toujours à séparer la logique de métier de la logique de
présentation.
On peut dire qu’on peut diviser une application en 3 couches:
 La couche d’accès aux données: DAO Partie de l’application qui permet d’accéder
aux données de l’applications. Ces données sont souvent stockées dans des bases de
données relationnelles .
 La couche Métier: Regroupe l’ensemble des traitements que l’application doit
effectuer.
 La couche présentation: S’occupe de la saisie des données et de l’affichage des
résultats;
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 7 ~
11. Architecture d’une application
Une application se compose de plusieurs couches:
 La couche DAO qui s’occupe de l’accès aux bases de données.
 La couche métier qui s’occupe des traitements.
 La couche présentation qui s’occupe de la saisie, le contrôle et l’affichage des
résultats.
Généralement la couche présentation respecte le pattern MVC qui fonctionne comme suit:
1. La vue permet de saisir les données, envoie ces données au contrôleur
2. Le contrôleur récupère les données saisies. Après la validation de ces données, il fait
appel à la couche métier pour exécuter des traitements.
3. Le contrôleur stocke le résultat de le modèle.
4. Le contrôleur fait appel à la vue pour afficher les résultats.
5. La vue récupère les résultats à partir du modèle et les affiche.
12. Mapping objet relationnel
D’une manière générale les applications sont orientée objet :
 Manipulation des objets et des classes
 Utilisation de l’héritage et de l’encapsulation
 Utilisation du polymorphisme
D’autre part les données persistantes sont souvent stockées dans des bases de données
relationnelles.
Le mapping Objet relationnel consiste à faire
 Correspondre un enregistrement d’une table de la base de données à un objet d’une
classe correspondante.
 Dans ce cas on parle d’une classe persistante.
 Une classe persistante est une classe dont l’état de ses objets sont stockés dans une
unité de sauvegarde (Base de données, Fichier, etc..)
Couche Métier : Mapping objet relationnel
public List<Cotation> getCotations(String codeSoc){
List<Cotation> cotations=new ArrayList<Cotation>();
try {
ModèleVue
Contrôleur
Métier
DAO
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 8 ~
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection
("jdbc:mysql://localhost:3306/bourse_ws","root","");
PreparedStatement ps = conn.prepareStatement
("select * from cotations where CODE_SOCIETE=?");
ps.setString(1, codeSoc);
ResultSet rs=ps.executeQuery();
while(rs.next()){
Cotation cot=new Cotation();
cot.setNumCotation(rs.getLong("NUM_COTATION"));
cot.setDateCotation(rs.getDate("DATE_COTATION"));
cot.setCodeSociete(rs.getString("CODE_SOCIETE"));
cot.setValAction(rs.getDouble("VAL_ACTION"));
cotations.add(cot);
}
} catch (Exception e) { e.printStackTrace();}
return (cotations);
}
Application
On considère une base de données qui contient une table ETUDIANTS qui permet de stocker
les étudiants d’une école. La structure de cette table est la suivante :
Nous souhaitons créer une application java qui permet de saisir au clavier un motclé et
d’afficher tous les étudiants dont le nom contient ce mot clé.
Dans cette application nous devons séparer la couche métier de la couche présentation.
Pour cela, la couche métier est représentée par un modèle qui se compose de deux classes :
 La classe Etudiant.java : c’est une classe persistante c'est-à-dire que chaque objet de
cette classe correspond à un enregistrement de la table ETUDIANTS. Elle se compose
des : champs privés idEtudiant, nom, prenom, email et ville, d’un constructeur par
défaut, des getters et setters. Ce genre de classe c’est ce qu’on appelle un java bean.
 La classe Scolarite.java : c’est une classe non persistante dont laquelle, on
implémente les différentes méthodes métiers. Dans cette classe, on fait le mapping
objet relationnel qui consiste à convertir un enregistrement d’une table en objet
correspondant.
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 9 ~
Dans notre cas, une seule méthode nommée getEtudiants(String mc) qui permet de
retourner une Liste qui contient tous les objets Etudiant dont le nom contient le mot clé «
mc ».
Travail à faire :
Couche données :
 Créer la base de données « SCOLARITE » de type MySQL
 Saisir quelques enregistrements de test
Couche métier. ( package metier) :
 Créer la classe persistante Etudiant.java
 Créer la classe des business méthodes Scolarite.java
Couche présentation (package pres):
 Créer une application de test qui permet de saisir au clavier le mot clé et qui affiche
les étudiants dont le nom contient ce mot clé.
Couche métier : la classe persistante Etudiant.java
package metier;
public class Etudiant {
private Long idEtudiant;
private String nom,prenom,email;
// Getters etStters
}
Couche métier : la classe Scolarite.java
package metier;
import java.sql.*; import java.util.*;
public class Scolarite {
public List<Etudiant> getEtudiantParMC(String mc){
M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid
~ 10 ~
List<Etudiant> etds=new ArrayList<Etudiant>();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/DB_SCO","root","");
PreparedStatement ps=conn.prepareStatement("select *
from ETUDIANTS where NOM like ?");
ps.setString(1,"%"+mc+"%");
ResultSet rs=ps.executeQuery();
while(rs.next()){
Etudiant et=new Etudiant();
et.setIdEtudiant(rs.getLong("ID_ET"));
et.setNom(rs.getString("NOM"));
et.setPrenom(rs.getString("PRENOM"));
et.setEmail(rs.getString("EMAIL"));
etds.add(et);
}
} catch (Exception e) { e.printStackTrace(); }
return etds;
}
}
Couche Présentation : Applications Simple
package pres;
import java.util.List;import java.util.Scanner;
import metier.Etudiant;import metier.Scolarite;
public class Presentation {
public static void main(String[] args) {
Scanner clavier=new Scanner(System.in);
System.out.print("Mot Clé:");
String mc=clavier.next();
Scolarite metier=new Scolarite();
List<Etudiant> etds=metier.getEtudiantParMC(mc);
for(Etudiant et:etds)
System.out.println(et.getNom()+"t"+et.getEmail());
}
}

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (13)

Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence API
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
 
Hibernate
HibernateHibernate
Hibernate
 
Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
 
Sqlalchemy declaratif
Sqlalchemy declaratifSqlalchemy declaratif
Sqlalchemy declaratif
 
Springioc
SpringiocSpringioc
Springioc
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)
 

Andere mochten auch

Plantes tinctoriales medicinal - verville
Plantes tinctoriales   medicinal - vervillePlantes tinctoriales   medicinal - verville
Plantes tinctoriales medicinal - vervilleMunoz Isabelle
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuéesFranck SIMON
 
les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitésoregh
 
La creative boutique international event experts
La creative boutique   international event expertsLa creative boutique   international event experts
La creative boutique international event expertsJennifer Raimond
 
Marketing multicanal cmd
Marketing multicanal cmdMarketing multicanal cmd
Marketing multicanal cmdMagaliRebeyrat
 
Carrière informatique sam savoie
Carrière informatique  sam savoieCarrière informatique  sam savoie
Carrière informatique sam savoiesamsavoie13
 

Andere mochten auch (20)

Chap3 clientsrvr
Chap3 clientsrvrChap3 clientsrvr
Chap3 clientsrvr
 
Chap4 cliserrmi
Chap4 cliserrmiChap4 cliserrmi
Chap4 cliserrmi
 
Qualite1
Qualite1Qualite1
Qualite1
 
Tests unitaires
Tests unitairesTests unitaires
Tests unitaires
 
Chap1 clientsrvr
Chap1 clientsrvrChap1 clientsrvr
Chap1 clientsrvr
 
Plantes tinctoriales medicinal - verville
Plantes tinctoriales   medicinal - vervillePlantes tinctoriales   medicinal - verville
Plantes tinctoriales medicinal - verville
 
Tableau de bord
Tableau de bordTableau de bord
Tableau de bord
 
Structures donneenew
Structures donneenewStructures donneenew
Structures donneenew
 
Structures donnee
Structures donneeStructures donnee
Structures donnee
 
La mesure logicielle
La mesure logicielleLa mesure logicielle
La mesure logicielle
 
Hibernate
HibernateHibernate
Hibernate
 
Chap2 clientsrvr
Chap2 clientsrvrChap2 clientsrvr
Chap2 clientsrvr
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuées
 
les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualité
 
RP DIGITALES
RP DIGITALESRP DIGITALES
RP DIGITALES
 
La creative boutique international event experts
La creative boutique   international event expertsLa creative boutique   international event experts
La creative boutique international event experts
 
Marketing multicanal cmd
Marketing multicanal cmdMarketing multicanal cmd
Marketing multicanal cmd
 
Programme de 18 jours
Programme de 18 joursProgramme de 18 jours
Programme de 18 jours
 
Carrière informatique sam savoie
Carrière informatique  sam savoieCarrière informatique  sam savoie
Carrière informatique sam savoie
 

Ähnlich wie Accès aux bases de données via jdbc

Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxsalmachtioui1
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
 
Introduction jdbc
Introduction  jdbcIntroduction  jdbc
Introduction jdbcKarim Amane
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 
Activity
ActivityActivity
Activitydido
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctionsMICHRAFY MUSTAFA
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 EeST informatique services
 
Ado.net base de données
Ado.net   base de donnéesAdo.net   base de données
Ado.net base de donnéesAdam CH
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Alphorm.com Formation Informatica PowerCenter : Installer et Configurer
Alphorm.com Formation Informatica PowerCenter : Installer et ConfigurerAlphorm.com Formation Informatica PowerCenter : Installer et Configurer
Alphorm.com Formation Informatica PowerCenter : Installer et ConfigurerAlphorm
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcabderrahim marzouk
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart ClientGuillaume Sauthier
 

Ähnlich wie Accès aux bases de données via jdbc (20)

Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Jdbc par4
Jdbc par4Jdbc par4
Jdbc par4
 
Introduction jdbc
Introduction  jdbcIntroduction  jdbc
Introduction jdbc
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
 
1145709.ppt
1145709.ppt1145709.ppt
1145709.ppt
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Activity
ActivityActivity
Activity
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctions
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
 
Rapport tp3 j2ee
Rapport tp3 j2eeRapport tp3 j2ee
Rapport tp3 j2ee
 
spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
 
Ado.net base de données
Ado.net   base de donnéesAdo.net   base de données
Ado.net base de données
 
Android ORMLite
Android   ORMLiteAndroid   ORMLite
Android ORMLite
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Alphorm.com Formation Informatica PowerCenter : Installer et Configurer
Alphorm.com Formation Informatica PowerCenter : Installer et ConfigurerAlphorm.com Formation Informatica PowerCenter : Installer et Configurer
Alphorm.com Formation Informatica PowerCenter : Installer et Configurer
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvc
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 
iTunes Stats
iTunes StatsiTunes Stats
iTunes Stats
 

Mehr von Rachid Lajouad

4 representationprocessindustrielslastversion
4 representationprocessindustrielslastversion4 representationprocessindustrielslastversion
4 representationprocessindustrielslastversionRachid Lajouad
 
3 identification des systèmes
3 identification des systèmes3 identification des systèmes
3 identification des systèmesRachid Lajouad
 
2 correction des systèmes asservis
2 correction des systèmes asservis2 correction des systèmes asservis
2 correction des systèmes asservisRachid Lajouad
 
1 asservissements linéaires continus
1 asservissements linéaires continus1 asservissements linéaires continus
1 asservissements linéaires continusRachid Lajouad
 

Mehr von Rachid Lajouad (11)

4 representationprocessindustrielslastversion
4 representationprocessindustrielslastversion4 representationprocessindustrielslastversion
4 representationprocessindustrielslastversion
 
3 identification des systèmes
3 identification des systèmes3 identification des systèmes
3 identification des systèmes
 
2 correction des systèmes asservis
2 correction des systèmes asservis2 correction des systèmes asservis
2 correction des systèmes asservis
 
1 asservissements linéaires continus
1 asservissements linéaires continus1 asservissements linéaires continus
1 asservissements linéaires continus
 
Planifier projet
Planifier projetPlanifier projet
Planifier projet
 
Gestion de projet
Gestion de projetGestion de projet
Gestion de projet
 
Algorithmique v
Algorithmique vAlgorithmique v
Algorithmique v
 
Algorithmique iv
Algorithmique ivAlgorithmique iv
Algorithmique iv
 
Algorithmique iii
Algorithmique iiiAlgorithmique iii
Algorithmique iii
 
Algorithmique ii
Algorithmique iiAlgorithmique ii
Algorithmique ii
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 

Kürzlich hochgeladen

GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 

Kürzlich hochgeladen (20)

GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 

Accès aux bases de données via jdbc

  • 1. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 1 ~ Accès aux bases de données via JDBC Plan 1. Architectures d’une application :......................................................................................... 2 2. Pilotes JDBC....................................................................................................................... 2 3. Créer une application JDBC................................................................................................. 3 4. Démarche JDBC.................................................................................................................. 3 Charger les pilotes JDBC : ....................................................................................................... 3 5. Créer une connexion.......................................................................................................... 4 6. Objets Statement, ResultSetet ResultSetMetaData.............................................................. 4 7. Objet PreparedStatement................................................................................................... 5 8. Récupérerles données d’un ResultSet................................................................................. 5 9. Exploitation de l’objet ResultSetMetaData........................................................................... 6 10. Mapping objet relationnel .............................................................................................. 6 11. Architecture d’une application........................................................................................ 7 12. Mapping objet relationnel .............................................................................................. 7 Couche Métier : Mapping objet relationnel............................................................................. 7 Application............................................................................................................................ 8 Couche métier : la classe persistante Etudiant.java.................................................................. 9 Couche métier : la classe Scolarite.java ................................................................................... 9 Couche Présentation : Applications Simple.............................................................................10
  • 2. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 2 ~ 1. Architectures d’une application : 2. Pilotes JDBC  Pour qu’une application java puisse communiquer avec un serveur de bases de données, elle a besoin d’utiliser les pilotes JDBC (Java Data Base Connectivity)  Les Pilotes JDBC est une bibliothèque de classes java qui permet, à une application java, de communiquer avec un SGBD via le réseau en utilisant le protocole TCP/IP  Chaque SGBD possède ses propres pilotes JDBC.  Il existe un pilote particulier « JdbcOdbcDriver » qui permet à une application java communiquer avec n’importe quelle source de données via les pilotes ODBC (Open Data Base Connectivity)  Les pilotes ODBC permettent à une application Windows de communiquer une base de données quelconque (Access, Excel, MySQL, Oracle, SQL SERVER SGBD Client http  Html, css, JavaScript  XML, AJAX, JQUERY, Spry  SVG ou Flash  Application Java (Swing)  Smart Phone  Application .Net  Application PHP  Serveur de messagerie  Client SMS SERVEUR D’APPLICATION J2EE Couche DAO JPA, Hibernate Couche Métier Couche web  Struts  Spring  JSF Couche Service - RMI - CORBA - EJB Session - SOAP - JMS - Java Mail - SMSLib - … JDBC
  • 3. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 3 ~ etc…)  La bibliothèque JDBC a été conçu comme interface pour l’exécution de requêtes SQL.  Une application JDBC est isolée des caractéristiques particulières du système de base de données utilisé. 3. Créer une application JDBC Pour créer une application élémentaire de manipulation d’une base de données il faut suivre les étapes suivantes :  Chargement du Pilote JDBC ;  Identification de la source de données ;  Allocation d’un objet Connection  Allocation d’un objet Instruction Statement (ou PreparedStatement);  Exécution d’une requête à l’aide de l’objet Statement ;  Récupération de données à partir de l’objet renvoyé ResultSet ;  Fermeture de l’objet ResultSet ;  Fermeture de l’objet Statement ;  Fermeture de l’objet Connection. 4. Démarche JDBC Charger les pilotes JDBC : Utiliser la méthode « forName » de la classe « Class », en précisant le nom de la classe pilote. Exemples: Pour charger le pilote JdbcOdbcDriver: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; Connection createStatement() DriverManager getConnection() ResultSet getResultSetMetaData() Statement executeQuery() ResulSetMetaDa ta Pilote JDBC Base de données Lien SQL Données Structures
  • 4. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 4 ~ Pour charger le pilote jdbc de MySQL: Class.forName("com.mysql.jdbc.Driver"); 5. Créer une connexion Pour créer une connexion à une base de données, il faut utiliser la méthode statique getConnection() de la classe DriverManager. Cette méthode fait appel aux pilotes JDBC pour établir une connexion avec le SGBDR, en utilisant les sockets. Pour un pilote com.mysql.jdbc.Driver : Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/DB", "user", "pass" ); Pour un pilote sun.jdbc.odbc.JdbcOdbcDriver : Connection conn = DriverManager.getConnection ("jdbc:odbc:dsnSCO", "user", "pass" ); 6. Objets Statement, ResultSet et ResultSetMetaData Pour exécuter une requête SQL, on peut créer l’objet Statement en utilisant la méthode createStatement() de l’objet Connection. Syntaxte de création de l’objet Statement Statement st = conn.createStatement(); Exécution d’une requête SQL avec l’objet Statement : Pour exécuter une requête SQL de type select, on peut utiliser la méthode executeQuery() de l’objet Statement. Cette méthode exécute la requête et stocke le résultat de la requête dans l’objet ResultSet:
  • 5. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 5 ~ ResultSet rs=st.executeQuery("select * from PRODUITS"); Pour exécuter une requête SQL de type insert, update et delete on peut utiliser la méthode executeUpdate() de l’objet Statement : st.executeUpdate("insert into PRODUITS (…) values(…)"); Pour récupérer la structure d’une table, il faut créer l’objet ResultSetMetaData en utilisant la méthode getMetaData() de l’objet Resultset. ResultSetMetaData rsmd = rs.getMetaData(); 7. Objet PreparedStatement Pour exécuter une requête SQL, on peut également créer l’objet PreparedStatement en utilisant la méthode prepareStatement() de l’objet Connection. Syntaxte de création de l’objet PreparedStatement PreparedStatement ps=conn.prepareStatement("select * from PRODUITS where NOM_PROD like ? AND PRIX<?"); Définir les valeurs des paramètres de la requête: ps.setString(1,"%"+motCle+"%"); ps.setString(2, p); Exécution d’une requête SQL avec l’objet PreparedStatement : Pour exécuter une requête SQL de type select, on peut utiliser la méthode executeQuery() de l’objet Statement. Cette méthode exécute la requête et stocke le résultat de la requête dans l’objet ResultSet: ResultSet rs=ps.executeQuery(); Pour exécuter une requête SQL de type insert, update et delete on peut utiliser la méthode executeUpdate() de l’objet Statement : ps.executeUpdate(); 8. Récupérer les données d’un ResultSet Pour parcourir un ResultSet, on utilise sa méthode next() qui permet de passer d’une ligne à l’autre. Si la ligne suivante existe, la méthode next() retourne true. Si non elle retourne false. Pour récupérer la valeur d’une colonne de la ligne courante du ResultSet, on peut utiliser les méthodes getInt(colonne), getString(colonne), getFloat(colonne), getDouble(colonne), getDate(colonne), etc… colonne représente le numéro ou le nom de la colonne de la ligne courante. Syntaxte:
  • 6. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 6 ~ while(rs.next()){ System.out.ptintln(rs.getInt(1)); System.out.ptintln(rs.getString("NOM_PROD")); System.out.ptintln(rs.getDouble("PRIX")); } 9. Exploitation de l’objet ResultSetMetaData L’objet ResultSetMetaData est très utilsé quand on ne connait pas la structure d’un ResultSet. Avec L’objet ResultSetMetaData, on peut connaitre le nombre de colonnes du ResultSet, le nom, le type et la taille de chaque colonne. Pour afficher, par exemple, le nom, le type et la taille de toutes les colonnes d’un ResultSet rs, on peut écrire le code suivant: ResultSetMetaData rsmd=rs.getMetaData(); // Parcourir toutes les colonnes for(int i=0;i<rsmd.getColumnCount();i++){ // afficher le nom de la colonne numéro i System.out.println(rsmd.getColumnName(i)); // afficher le type de la colonne numéro i System.out.println(rsmd.getColumnTypeName(i)); // afficher la taille de la colonne numéro i System.out.println(rsmd.getColumnDisplaySize(i)); } // Afficher tous les enregistrements du ResultSet rs while (rs.next()){ for(int i=0;i<rsmd.getColumnCount();i++){ System.out.println(rs.getString(i)); } } 10. Mapping objet relationnel Dans la pratique, on cherche toujours à séparer la logique de métier de la logique de présentation. On peut dire qu’on peut diviser une application en 3 couches:  La couche d’accès aux données: DAO Partie de l’application qui permet d’accéder aux données de l’applications. Ces données sont souvent stockées dans des bases de données relationnelles .  La couche Métier: Regroupe l’ensemble des traitements que l’application doit effectuer.  La couche présentation: S’occupe de la saisie des données et de l’affichage des résultats;
  • 7. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 7 ~ 11. Architecture d’une application Une application se compose de plusieurs couches:  La couche DAO qui s’occupe de l’accès aux bases de données.  La couche métier qui s’occupe des traitements.  La couche présentation qui s’occupe de la saisie, le contrôle et l’affichage des résultats. Généralement la couche présentation respecte le pattern MVC qui fonctionne comme suit: 1. La vue permet de saisir les données, envoie ces données au contrôleur 2. Le contrôleur récupère les données saisies. Après la validation de ces données, il fait appel à la couche métier pour exécuter des traitements. 3. Le contrôleur stocke le résultat de le modèle. 4. Le contrôleur fait appel à la vue pour afficher les résultats. 5. La vue récupère les résultats à partir du modèle et les affiche. 12. Mapping objet relationnel D’une manière générale les applications sont orientée objet :  Manipulation des objets et des classes  Utilisation de l’héritage et de l’encapsulation  Utilisation du polymorphisme D’autre part les données persistantes sont souvent stockées dans des bases de données relationnelles. Le mapping Objet relationnel consiste à faire  Correspondre un enregistrement d’une table de la base de données à un objet d’une classe correspondante.  Dans ce cas on parle d’une classe persistante.  Une classe persistante est une classe dont l’état de ses objets sont stockés dans une unité de sauvegarde (Base de données, Fichier, etc..) Couche Métier : Mapping objet relationnel public List<Cotation> getCotations(String codeSoc){ List<Cotation> cotations=new ArrayList<Cotation>(); try { ModèleVue Contrôleur Métier DAO
  • 8. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 8 ~ Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection ("jdbc:mysql://localhost:3306/bourse_ws","root",""); PreparedStatement ps = conn.prepareStatement ("select * from cotations where CODE_SOCIETE=?"); ps.setString(1, codeSoc); ResultSet rs=ps.executeQuery(); while(rs.next()){ Cotation cot=new Cotation(); cot.setNumCotation(rs.getLong("NUM_COTATION")); cot.setDateCotation(rs.getDate("DATE_COTATION")); cot.setCodeSociete(rs.getString("CODE_SOCIETE")); cot.setValAction(rs.getDouble("VAL_ACTION")); cotations.add(cot); } } catch (Exception e) { e.printStackTrace();} return (cotations); } Application On considère une base de données qui contient une table ETUDIANTS qui permet de stocker les étudiants d’une école. La structure de cette table est la suivante : Nous souhaitons créer une application java qui permet de saisir au clavier un motclé et d’afficher tous les étudiants dont le nom contient ce mot clé. Dans cette application nous devons séparer la couche métier de la couche présentation. Pour cela, la couche métier est représentée par un modèle qui se compose de deux classes :  La classe Etudiant.java : c’est une classe persistante c'est-à-dire que chaque objet de cette classe correspond à un enregistrement de la table ETUDIANTS. Elle se compose des : champs privés idEtudiant, nom, prenom, email et ville, d’un constructeur par défaut, des getters et setters. Ce genre de classe c’est ce qu’on appelle un java bean.  La classe Scolarite.java : c’est une classe non persistante dont laquelle, on implémente les différentes méthodes métiers. Dans cette classe, on fait le mapping objet relationnel qui consiste à convertir un enregistrement d’une table en objet correspondant.
  • 9. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 9 ~ Dans notre cas, une seule méthode nommée getEtudiants(String mc) qui permet de retourner une Liste qui contient tous les objets Etudiant dont le nom contient le mot clé « mc ». Travail à faire : Couche données :  Créer la base de données « SCOLARITE » de type MySQL  Saisir quelques enregistrements de test Couche métier. ( package metier) :  Créer la classe persistante Etudiant.java  Créer la classe des business méthodes Scolarite.java Couche présentation (package pres):  Créer une application de test qui permet de saisir au clavier le mot clé et qui affiche les étudiants dont le nom contient ce mot clé. Couche métier : la classe persistante Etudiant.java package metier; public class Etudiant { private Long idEtudiant; private String nom,prenom,email; // Getters etStters } Couche métier : la classe Scolarite.java package metier; import java.sql.*; import java.util.*; public class Scolarite { public List<Etudiant> getEtudiantParMC(String mc){
  • 10. M9 : Partie 1 (JDBC) BTS-DSI LajouadRachid ~ 10 ~ List<Etudiant> etds=new ArrayList<Etudiant>(); try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/DB_SCO","root",""); PreparedStatement ps=conn.prepareStatement("select * from ETUDIANTS where NOM like ?"); ps.setString(1,"%"+mc+"%"); ResultSet rs=ps.executeQuery(); while(rs.next()){ Etudiant et=new Etudiant(); et.setIdEtudiant(rs.getLong("ID_ET")); et.setNom(rs.getString("NOM")); et.setPrenom(rs.getString("PRENOM")); et.setEmail(rs.getString("EMAIL")); etds.add(et); } } catch (Exception e) { e.printStackTrace(); } return etds; } } Couche Présentation : Applications Simple package pres; import java.util.List;import java.util.Scanner; import metier.Etudiant;import metier.Scolarite; public class Presentation { public static void main(String[] args) { Scanner clavier=new Scanner(System.in); System.out.print("Mot Clé:"); String mc=clavier.next(); Scolarite metier=new Scolarite(); List<Etudiant> etds=metier.getEtudiantParMC(mc); for(Etudiant et:etds) System.out.println(et.getNom()+"t"+et.getEmail()); } }