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
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)
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());