BTS SIO : la programmation Androïd
1
La programmation sous Android :
Persistance des données : avec base
de données
Nous reprendre la correction du jeu du pendu pour charger les mots depuis une base de
données.
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" :
PRESENTATION DU TD
MISE EN PLACE
BTS SIO : la programmation Androïd
2
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 java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import 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 void create(Object o);
@Override
public abstract void update(Object o) ;
@Override
public abstract void delete(Object o);
@Override
public abstract Object findById(Object id);
@Override
public abstract ArrayList<Object> findAll();
}
INTERACTION AVEC LA BDD
BTS SIO : la programmation Androïd
3
package metier;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import 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.
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !