Vous êtes sur la page 1sur 29

CONNEXION BASE DE

DONNÉES
Wael Mallek
Imed Amri Mini-projets Java-BD 2011-2012
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) {

}
}

Vous aimerez peut-être aussi