1 / 29

Connexion base de données

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

shaina
Download Presentation

Connexion base de données

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Connexion base de données Mini-projets Java-BD 2011-2012 WaelMallek 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 = ""; • staticConnectionconn; • staticStatementste;

  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 = ""; • staticConnectionconn; • staticStatementste;

  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 : • staticvoid Ajouter(String Nom, String Prenom){ } • staticvoidUpdatePrenom(int id, String Prenom){ } • staticvoidDelete(int id){ } • staticvoidAfficherAll(){ } Utiliser le ResultSet pour récupérer le résultat de executeQuery • ajouter throwsSQLException 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 • privatestaticConnectionconn; • un constructeur déclaré en privé • privateMyConnection() { … } • une méthode statique servant de pseudo-constructeur • public staticConnectiongetInstance() { … }

  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 • privatestaticConnectionconn; • privateMyConnection() { } • public staticConnectiongetInstance(){ if(conn==null) { MyConnectionaa = new MyConnection(); } return conn; }

  17. Entite • Créer une classe Personne • privateint 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 • Connectionconn=MyConnection.getInstance(); • Statementste; • Méthodes CRUD • public int Ajouter (Personne p) • public Vector<Personne> readAll() • public boolean update (Personne p) • public booleandelete (int id) • public Personne findById (int id)

  19. Ajouter public int Ajouter(Personne p) throwsSQLException { intcle=0; ste=conn.createStatement(); String reqinsert ="INSERT INTO `personne` ( `nom` , `prenom` ) " + "VALUES ('"+p.getNom()+"', '"+p.getPrenom()+"');"; ste.executeUpdate(reqinsert); ResultSetrs=ste.getGeneratedKeys(); while (rs.next()) { cle=rs.getInt(1); } return cle; }

  20. DAO • Créer une Classe PersonneDAO • Connectionconn=MyConnection.getInstance(); • Statementste; • Méthodes CRUD • public int Ajouter (Personne p) • public Vector<Personne> readAll() • public boolean update (Personne p) • public booleandelete (int id) • public Personne findById (int id)

  21. readAll() public Vector<Personne> readAll() throws SQLException{ Vector<Personne> v=new Vector<Personne>(); Statementste=conn.createStatement(); String req="Select * from personne;"; ResultSetrs=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 • Connectionconn=MyConnection.getInstance(); • Statementste; • Méthodes CRUD • public int Ajouter (Personne p) • public Vector<Personne> readAll() • public boolean update (Personne p) • public booleandelete (int id) • public Personne findById (int id)

  23. update public boolean update(Personne p) throws SQLException { boolean test=false; Statementste=conn.createStatement(); String req="UPDATE `j2me`.`personne` SET `nom` ='"+p.getNom()+"' WHERE `personne`.`id` ="+p.getId()+";"; intres=ste.executeUpdate(req); if(res!=0) test=true; return test; }

  24. DAO • Créer une Classe PersonneDAO • Connectionconn=MyConnection.getInstance(); • Statementste; • Méthodes CRUD • public int Ajouter (Personne p) • public Vector<Personne> readAll() • public boolean update (Personne p) • public booleandelete (int id) • public Personne findById (int id)

  25. delete public boolean delete(int id) throws SQLException {boolean test=false; Statementste=conn.createStatement(); String req="DELETE FROM `j2me`.`personne` WHERE `personne`.`id` ='"+id+"';"; intres=ste.executeUpdate(req); if(res!=0) test=true; return test; }

  26. DAO • Créer une Classe PersonneDAO • Connectionconn=MyConnection.getInstance(); • Statementste; • Méthodes CRUD • public int Ajouter (Personne p) • public Vector<Personne> readAll() • public boolean update (Personne p) • public booleandelete (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; ResultSetrs=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) { } }

More Related