Présentation du TD

publicité
BTS SIO : la programmation Androïd
La programmation sous Android :
Persistance des données : avec base
de données
PRESENTATION DU TD
Nous reprendre la correction du jeu du pendu pour charger les mots depuis une base de
données.
MISE EN PLACE
J'ai créé pour vous une base de données WORDBDD sur le serveur postgres du réseau local
SIO. (adresse 172.18.207.1).
Cette base est accessible depuis un client postgres avec le login "postgres" "0550002D".
Vérifiez pour commencer que vous pouvez vous y connecter.
Dans Eclipse, il est nécessaire d'importer le fichier .jar (paquet librairie java externe) pour
l'accès à PostgreSQL. Une version compatible Androïd est téléchargeable sur :
https://groups.google.com/forum/?fromgroups#!topic/pgandroid/2LQA8Dn2bV8
Une fois le fichier .jar récupéré, il faut
:
 Créer un répertoire libs dans
votre projet
 Y déposer le fichier jar
(postgresql.jar)
 Dans les propriétés du projet, il
faut ajouter le dossier libs au
java build path :
Si la configuration est correcte, vous
devriez voir apparaître la librairie dans
les "Android dependencies" :
1
BTS SIO : la programmation Androïd
INTERACTION AVEC LA BDD
Pour l'utilisation de la bibliothèque, nous travaillerons avec un cours de Mark Wong de
l'université d'Ottawa (fichier pdf joint). Celui ci couvre la plupart des besoins d'un
développeur pour l'accès à une base postgres.
Notez qu'après plusieurs tests, il semblerait que le Driver fourni par ce développeur ne soit
pas compatible avec les machines sous Androïd 4. Ceci fonctionne parfaitement en 2.3 pour le
moment (versions 3 à tester si vous avez du temps à la fin du TP).
Par exemple, reprenons notre projet et faisons en sorte de charger les mots du pendu depuis la
base de données :
On crée tout d'abord un DAO pour les mots : (interface IDAO, PGDAO et MotDAO)
package metier;
import java.util.ArrayList;
public interface IDAO {
public void create(Object o);
public void update(Object o);
public void delete(Object o);
public Object findById(Object id);
public ArrayList<Object> findAll();
}
package metier;
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.SQLException;
java.util.ArrayList;
public abstract class PGDAO implements IDAO {
protected Connection conn;
public PGDAO(){
try {
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://193.252.48.172:5432/WORDBDD";
this.conn = DriverManager.getConnection(url, "postgres", "0550002D");
System.out.println("CONNECTION SUR " + url + " avec "+this.conn.toString());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public abstract
@Override
public abstract
@Override
public abstract
@Override
public abstract
@Override
public abstract
void create(Object o);
void update(Object o) ;
void delete(Object o);
Object findById(Object id);
ArrayList<Object> findAll();
}
2
BTS SIO : la programmation Androïd
package metier;
import
import
import
import
import
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
java.util.ArrayList;
public class MotDAO extends PGDAO {
public MotDAO() {
super();
}
@Override
public void create(Object o) {
}
@Override
public void update(Object o) {
}
@Override
public void delete(Object o) {
}
@Override
public Object findById(Object id) {
return null;
}
@Override
public ArrayList<Object> findAll() {
ArrayList<Object> liste = new ArrayList<Object>();
try {
String sql = "select * from words";
Statement stmt = this.conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
Mot m = new Mot();
m.setId(rs.getInt(1));
m.setLemot(rs.getString(2));
liste.add(m);
}
rs.close();
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return liste;
}
}
Travail à faire :
Après avoir modifié votre code pour que les mots soient choisis parmi ceux figurant dans la
BDD et l'avoir testé, vous devrez :
- regarder la table STATS dans la base de données et vous en servir pour y enregistrer l'issue
de chaque partie. Quand on gagnera où que l'on perdra, le programme devra y ranger les
informations sur la partie qui vient d'être jouée.
- ajouter sur l'application une possibilité pour l'utilisateur de saisir son nom afin que celui ci
figure dans la table STATS à la fin d'une partie.
3
Téléchargement