SlideShare une entreprise Scribd logo
1  sur  29
CONNEXION BASE DE
DONNÉES
Mini-projets Java-BD 2011-2012
Wael Mallek
Imed Amri
JDBC API ?
 API d’interaction avec un SGBD contenant :
 un ensemble de classes et d’interfaces
 ne fournit pas les classes qui implantent les
interfaces
 Permet de:
 Établir une connexion avec un SGBD
 Envoyer des requêtes SQL
 Récupérer des résultats de requêtes
Drivers ?
 Drivers
 chaque SGBD utilise un pilote (driver) qui lui est
propre et qui permet de convertir les requêtes
JDBC dans le langage natif du SGBD
 le driver est un ensemble de classes qui
implantent les interfaces de JDBC
 les drivers sont le lien entre le programme Java et
le SGBD
Base MySQL
 Créer une base mysql ‘esprit’
Projet Java
 Créer un nouveau Projet : Java Application
 Ajouter la Librairie MySQL JDBC Driver
Méthode Main
 Les Attribues de la classes :
 static String url = "jdbc:mysql://localhost/esprit";
 static String user = "root";
 static String pwd = "";
 static Connection conn;
 static Statement ste;
Méthode Main
 Charger le Driver
 Class.forName("com.mysql.jdbc.Driver");
 Etablir une connexion
 conn = DriverManager.getConnection(url, user,
pwd);
 Traiter les exceptions
 ClassNotFoundException
 SQLException
Méthode Main
 Les Attribues de la classes :
 static String url = "jdbc:mysql://localhost/esprit";
 static String user = "root";
 static String pwd = "";
 static Connection conn;
 static Statement ste;
Méthode Main
 Créer un STATEMENT
 ste = conn.createStatement();
 Requete SQL d’ajout
 String req = "Insert into personne
values("+null+",'A2','3info')";
 Executer la Requete
 ste.executeUpdate(req) (insert, update,
delete)
 ste.executeQuery(req) select
Méthodes CRUD
 Créer 4 méthodes static :
 static void Ajouter(String Nom, String Prenom){ }
 static void UpdatePrenom(int id, String Prenom){ }
 static void Delete(int id){ }
 static void AfficherAll(){ }
Utiliser le ResultSet pour récupérer le résultat de
executeQuery
 ajouter throws SQLException pour chaque
Methode
Correspondance Java / BD
Type JDBC/SQL Méthode Java
 CHAR, VARCHAR getString()
 BINARY, VARBINARY getBytes()
 BIT getBoolean()
 INTEGER getInt()
 BIGINT getLong()
 SMALLINT getShort()
 REAL getFloat()
 DOUBLE, FLOAT getDouble()
 DATE getDate()
 TIME getTime()
 TIME STAMP getTimeStamp()
Design Pattern
 Singleton : permet d’instancier l’objet qu’une
seule fois.
Design Pattern
 Singleton : (dans notre cas)
 un attribut statique
 private static Connection conn;
 un constructeur déclaré en privé
 private MyConnection() { … }
 une méthode statique servant de pseudo-
constructeur
 public static Connection getInstance() { … }
Design Pattern
 DAO : Permet de regrouper les accès aux
données persistantes dans des classes à part.
 Séparation entre la couche Métier et les
données.
Les Packages
 Créer 4 packages
 Entite
 Classe Personne
 DAO
 Classe PersonneDAO
 Metier
 Classe MyConnection
 Test
 Classe Main
Metier
 private static Connection conn;
 private MyConnection() { }
 public static Connection getInstance(){
if(conn==null)
{
MyConnection aa = new MyConnection();
}
return conn;
}
Entite
 Créer une classe Personne
 private int id;
 private String nom;
 private String prenom;
 Générer les constructeurs
 Générer les Getters et les Setters
DAO
 Créer une Classe PersonneDAO
 Connection conn=MyConnection.getInstance();
 Statement ste;
 Méthodes CRUD
 public int Ajouter (Personne p)
 public Vector<Personne> readAll()
 public boolean update (Personne p)
 public boolean delete (int id)
 public Personne findById (int id)
Ajouter
public int Ajouter(Personne p) throws SQLException {
int cle=0;
ste=conn.createStatement();
String reqinsert ="INSERT INTO `personne` ( `nom` ,
`prenom` ) " +
"VALUES ('"+p.getNom()+"', '"+p.getPrenom()+"');";
ste.executeUpdate(reqinsert);
ResultSet rs=ste.getGeneratedKeys();
while (rs.next()) {
cle=rs.getInt(1);
}
return cle;
}
DAO
 Créer une Classe PersonneDAO
 Connection conn=MyConnection.getInstance();
 Statement ste;
 Méthodes CRUD
 public int Ajouter (Personne p)
 public Vector<Personne> readAll()
 public boolean update (Personne p)
 public boolean delete (int id)
 public Personne findById (int id)
readAll()
public Vector<Personne> readAll() throws SQLException{
Vector<Personne> v=new Vector<Personne>();
Statement ste=conn.createStatement();
String req="Select * from personne;";
ResultSet rs=ste.executeQuery(req);
while (rs.next()) {
Personne p=new Personne(rs.getInt(1), rs.getString(2),
rs.getString(3));
v.add(p);
}
return v;
}
DAO
 Créer une Classe PersonneDAO
 Connection conn=MyConnection.getInstance();
 Statement ste;
 Méthodes CRUD
 public int Ajouter (Personne p)
 public Vector<Personne> readAll()
 public boolean update (Personne p)
 public boolean delete (int id)
 public Personne findById (int id)
update
public boolean update(Personne p) throws SQLException {
boolean test=false;
Statement ste=conn.createStatement();
String req="UPDATE `j2me`.`personne` SET `nom`
='"+p.getNom()+"' WHERE `personne`.`id` ="+p.getId()+";";
int res=ste.executeUpdate(req);
if(res!=0)
test=true;
return test;
}
DAO
 Créer une Classe PersonneDAO
 Connection conn=MyConnection.getInstance();
 Statement ste;
 Méthodes CRUD
 public int Ajouter (Personne p)
 public Vector<Personne> readAll()
 public boolean update (Personne p)
 public boolean delete (int id)
 public Personne findById (int id)
delete
public boolean delete(int id) throws SQLException
{boolean test=false;
Statement ste=conn.createStatement();
String req="DELETE FROM `j2me`.`personne`
WHERE `personne`.`id` ='"+id+"';";
int res=ste.executeUpdate(req);
if(res!=0)
test=true;
return test;
}
DAO
 Créer une Classe PersonneDAO
 Connection conn=MyConnection.getInstance();
 Statement ste;
 Méthodes CRUD
 public int Ajouter (Personne p)
 public Vector<Personne> readAll()
 public boolean update (Personne p)
 public boolean delete (int id)
 public Personne findById (int id)
FindByID
public Personne findById(int id){
Personne p = null;
try {
ste = conn.createStatement();
String req="select * from personne where id="+id;
ResultSet rs=ste.executeQuery(req);
rs.next();
p=new Personne(rs.getInt(1),rs.getString(2),rs.getString(3));
} catch (SQLException ex) {
System.out.println("id n'existe pas");
}
return p;
}
Test
 Instancier une PersonneDAO
 PersonneDAO per=new PersonneDAO();
 Instancier une Personne
 Personne p=new Personne(1,"esprit", "ecole");
 Ajouter une personne
 Lire toutes les informations des personnes
 per.Ajouter(p);
 System.out.println(per.readAll());
Void Main
public static void main(String[] args) {
PersonneDAO per=new PersonneDAO();
Personne p=new Personne(1,"ffghf", "gfghg");
try {
per.Ajouter(p);
System.out.println(per.readAll());
} catch (SQLException ex) {
}
}

Contenu connexe

Similaire à 1145709.ppt

ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursHoracio Gonzalez
 
Introduction jdbc
Introduction  jdbcIntroduction  jdbc
Introduction jdbcKarim Amane
 
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
 
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
 
Accès aux bases de données via jdbc
Accès aux bases de données via jdbcAccès aux bases de données via jdbc
Accès aux bases de données via jdbcRachid Lajouad
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
#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
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Activity
ActivityActivity
Activitydido
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASGuillaume Sauthier
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity frameworkDNG Consulting
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open doorLeTesteur
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 

Similaire à 1145709.ppt (20)

ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
 
Introduction jdbc
Introduction  jdbcIntroduction  jdbc
Introduction jdbc
 
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
 
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
 
Accès aux bases de données via jdbc
Accès aux bases de données via jdbcAccès aux bases de données via jdbc
Accès aux bases de données via jdbc
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénients
 
Gradle
GradleGradle
Gradle
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
 
2016_js_react.pdf
2016_js_react.pdf2016_js_react.pdf
2016_js_react.pdf
 
#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
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Activity
ActivityActivity
Activity
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 

Dernier

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 - 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
 
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
 
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
 
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
 
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 - 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
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdfSoukainaMounawir
 
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 - 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 - 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
 
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
 
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
 

Dernier (15)

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 - 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ç...
 
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...
 
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 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
 
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
 
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 - 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é
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
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 - 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 - 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...
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
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 ...
 

1145709.ppt

  • 1. CONNEXION BASE DE DONNÉES Mini-projets Java-BD 2011-2012 Wael Mallek Imed Amri
  • 2. JDBC API ?  API d’interaction avec un SGBD contenant :  un ensemble de classes et d’interfaces  ne fournit pas les classes qui implantent les interfaces  Permet de:  Établir une connexion avec un SGBD  Envoyer des requêtes SQL  Récupérer des résultats de requêtes
  • 3. Drivers ?  Drivers  chaque SGBD utilise un pilote (driver) qui lui est propre et qui permet de convertir les requêtes JDBC dans le langage natif du SGBD  le driver est un ensemble de classes qui implantent les interfaces de JDBC  les drivers sont le lien entre le programme Java et le SGBD
  • 4. Base MySQL  Créer une base mysql ‘esprit’
  • 5. Projet Java  Créer un nouveau Projet : Java Application  Ajouter la Librairie MySQL JDBC Driver
  • 6. Méthode Main  Les Attribues de la classes :  static String url = "jdbc:mysql://localhost/esprit";  static String user = "root";  static String pwd = "";  static Connection conn;  static Statement ste;
  • 7. Méthode Main  Charger le Driver  Class.forName("com.mysql.jdbc.Driver");  Etablir une connexion  conn = DriverManager.getConnection(url, user, pwd);  Traiter les exceptions  ClassNotFoundException  SQLException
  • 8. Méthode Main  Les Attribues de la classes :  static String url = "jdbc:mysql://localhost/esprit";  static String user = "root";  static String pwd = "";  static Connection conn;  static Statement ste;
  • 9. Méthode Main  Créer un STATEMENT  ste = conn.createStatement();  Requete SQL d’ajout  String req = "Insert into personne values("+null+",'A2','3info')";  Executer la Requete  ste.executeUpdate(req) (insert, update, delete)  ste.executeQuery(req) select
  • 10. Méthodes CRUD  Créer 4 méthodes static :  static void Ajouter(String Nom, String Prenom){ }  static void UpdatePrenom(int id, String Prenom){ }  static void Delete(int id){ }  static void AfficherAll(){ } Utiliser le ResultSet pour récupérer le résultat de executeQuery  ajouter throws SQLException pour chaque Methode
  • 11. Correspondance Java / BD Type JDBC/SQL Méthode Java  CHAR, VARCHAR getString()  BINARY, VARBINARY getBytes()  BIT getBoolean()  INTEGER getInt()  BIGINT getLong()  SMALLINT getShort()  REAL getFloat()  DOUBLE, FLOAT getDouble()  DATE getDate()  TIME getTime()  TIME STAMP getTimeStamp()
  • 12. Design Pattern  Singleton : permet d’instancier l’objet qu’une seule fois.
  • 13. Design Pattern  Singleton : (dans notre cas)  un attribut statique  private static Connection conn;  un constructeur déclaré en privé  private MyConnection() { … }  une méthode statique servant de pseudo- constructeur  public static Connection getInstance() { … }
  • 14. Design Pattern  DAO : Permet de regrouper les accès aux données persistantes dans des classes à part.  Séparation entre la couche Métier et les données.
  • 15. Les Packages  Créer 4 packages  Entite  Classe Personne  DAO  Classe PersonneDAO  Metier  Classe MyConnection  Test  Classe Main
  • 16. Metier  private static Connection conn;  private MyConnection() { }  public static Connection getInstance(){ if(conn==null) { MyConnection aa = new MyConnection(); } return conn; }
  • 17. Entite  Créer une classe Personne  private int id;  private String nom;  private String prenom;  Générer les constructeurs  Générer les Getters et les Setters
  • 18. DAO  Créer une Classe PersonneDAO  Connection conn=MyConnection.getInstance();  Statement ste;  Méthodes CRUD  public int Ajouter (Personne p)  public Vector<Personne> readAll()  public boolean update (Personne p)  public boolean delete (int id)  public Personne findById (int id)
  • 19. Ajouter public int Ajouter(Personne p) throws SQLException { int cle=0; ste=conn.createStatement(); String reqinsert ="INSERT INTO `personne` ( `nom` , `prenom` ) " + "VALUES ('"+p.getNom()+"', '"+p.getPrenom()+"');"; ste.executeUpdate(reqinsert); ResultSet rs=ste.getGeneratedKeys(); while (rs.next()) { cle=rs.getInt(1); } return cle; }
  • 20. DAO  Créer une Classe PersonneDAO  Connection conn=MyConnection.getInstance();  Statement ste;  Méthodes CRUD  public int Ajouter (Personne p)  public Vector<Personne> readAll()  public boolean update (Personne p)  public boolean delete (int id)  public Personne findById (int id)
  • 21. readAll() public Vector<Personne> readAll() throws SQLException{ Vector<Personne> v=new Vector<Personne>(); Statement ste=conn.createStatement(); String req="Select * from personne;"; ResultSet rs=ste.executeQuery(req); while (rs.next()) { Personne p=new Personne(rs.getInt(1), rs.getString(2), rs.getString(3)); v.add(p); } return v; }
  • 22. DAO  Créer une Classe PersonneDAO  Connection conn=MyConnection.getInstance();  Statement ste;  Méthodes CRUD  public int Ajouter (Personne p)  public Vector<Personne> readAll()  public boolean update (Personne p)  public boolean delete (int id)  public Personne findById (int id)
  • 23. update public boolean update(Personne p) throws SQLException { boolean test=false; Statement ste=conn.createStatement(); String req="UPDATE `j2me`.`personne` SET `nom` ='"+p.getNom()+"' WHERE `personne`.`id` ="+p.getId()+";"; int res=ste.executeUpdate(req); if(res!=0) test=true; return test; }
  • 24. DAO  Créer une Classe PersonneDAO  Connection conn=MyConnection.getInstance();  Statement ste;  Méthodes CRUD  public int Ajouter (Personne p)  public Vector<Personne> readAll()  public boolean update (Personne p)  public boolean delete (int id)  public Personne findById (int id)
  • 25. delete public boolean delete(int id) throws SQLException {boolean test=false; Statement ste=conn.createStatement(); String req="DELETE FROM `j2me`.`personne` WHERE `personne`.`id` ='"+id+"';"; int res=ste.executeUpdate(req); if(res!=0) test=true; return test; }
  • 26. DAO  Créer une Classe PersonneDAO  Connection conn=MyConnection.getInstance();  Statement ste;  Méthodes CRUD  public int Ajouter (Personne p)  public Vector<Personne> readAll()  public boolean update (Personne p)  public boolean delete (int id)  public Personne findById (int id)
  • 27. FindByID public Personne findById(int id){ Personne p = null; try { ste = conn.createStatement(); String req="select * from personne where id="+id; ResultSet rs=ste.executeQuery(req); rs.next(); p=new Personne(rs.getInt(1),rs.getString(2),rs.getString(3)); } catch (SQLException ex) { System.out.println("id n'existe pas"); } return p; }
  • 28. Test  Instancier une PersonneDAO  PersonneDAO per=new PersonneDAO();  Instancier une Personne  Personne p=new Personne(1,"esprit", "ecole");  Ajouter une personne  Lire toutes les informations des personnes  per.Ajouter(p);  System.out.println(per.readAll());
  • 29. Void Main public static void main(String[] args) { PersonneDAO per=new PersonneDAO(); Personne p=new Personne(1,"ffghf", "gfghg"); try { per.Ajouter(p); System.out.println(per.readAll()); } catch (SQLException ex) { } }