Vous êtes sur la page 1sur 6

ATELIER 5 : Les bases de

données sous Android


Soit la base de données data.db avec une seule table Stagiaire :

Stagiaire ( id, nom, prenom, filiere).

PART 1 : Interface graphique


1. Créer une application Android avec la spécification graphique suivante :

Avec :
Widget Texte id
TextView Nom du stagiaire _

81 ANNEE DE FORMATION 2017/2018 W.JAKJOUD


TextView Prenom du stagiaire _
TextView Filiere du stagiaire _
TextView Identifiant du stagiaire _
EditText _ Id/ed1
EditText _ Id/ed2
EditText _ Id/ed3
EditText _ Id/ed4
Button Ajouter Id/btn1
Button Afficher Id/btn2
Button MAJ Id/btn3
Button Supprimer Id/btn4
ListView _ Id/lst

PART 2 : Classe de création et manipulation de la base


de données :
2. Créer une classe Java qui va rassembler tout le code nécessaire pour la création et la
manipulation des données :

public class MyDB extends SQLiteOpenHelper{

public static final String nomDB="data.db";


public static final int versionDB=1;

public MyDB(Context cnt){


super(cnt,nomDB,null,versionDB);
}

@Override
public void onCreate(SQLiteDatabase db) {
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS stagiaire");
onCreate(db);
}
}

82 ANNEE DE FORMATION 2017/2018 W.JAKJOUD


3. Création des tables : Dans la méthode onCreate de la classe MyDB, créer la table Stagiaire :
db.execSQL("create table stagiaire (id INTEGER PRIMARY KEY AUTOINCREMENT, nom
TEXT, prenom TEXT, filiere TEXT)");

4. Insertion des données dans la table : Créer une méthode InsertStagiaire par exemple avec le
code suivant :
public Boolean InsertStagiaire(String n, String p, String f){

//Activer l’écriture au nouveau de la base de données

SQLiteDatabase db = this.getWritableDatabase();

//Créer un objet ContentValues avec un ensemble de données sous forme de


//clé/valeur.
//ATTENTION : une clé doit avoir le même nom que le champ correspondant dans
//la base

ContentValues contentValues = new ContentValues();


contentValues.put("nom",n);
contentValues.put("prenom",p);
contentValues.put("filiere",f);

//Exécution de la requête d’ajout :


long retour = db.insert("stagiaire",null,contentValues);
if (retour==-1) return false;
else return true;
}

5. Affichage des données de la table : Créer une méthode qui retourne la liste des stagiaires,
on la nomme getlisteStagiaires par exemple avec le code suivant :

public ArrayList getListStagiaires(){


ArrayList liste = new ArrayList();
SQLiteDatabase db = this.getReadableDatabase();

83 ANNEE DE FORMATION 2017/2018 W.JAKJOUD


//on crée un curseur sur les données qui correspondent au resultat de
//l’execution de la requéte SQL select * from stagiaire :

Cursor cs = db.rawQuery("select * from stagiaire",null);

//on positionne le curseur sur la premiere ligne des données


cs.moveToFirst();

//on boucle sur les lignes de données,tant que le curseur n’est pas
encore //positionné en fin des données

while (cs.isAfterLast()==false){

//ici, on récupére les données suivant leur position dans la table et


leur format

String n = cs.getString(0);
String p = cs.getString(1);
String f = cs.getString(2);

//ici, on regroupe les trois champs sous forme d’une seule chaine de
caractéres,
//sinon, on doit utiliser un ArrayList d’hashtable comme on a déjà
procéder (voir atelier 3 partie ListView).

liste.add(n+"-"+p+"-"+f);
cs.moveToNext();
}
//On retourne la liste
return liste;
}

6. Mettre à jour les données : On crée une nouvelle méthode qui prendra en paramètres les
nouvelles valeurs qui vont remplacer les anciennes :
public Boolean UpdateStagiaire(String id, String n, String p, String f){
SQLiteDatabase db = this.getWritableDatabase();

84 ANNEE DE FORMATION 2017/2018 W.JAKJOUD


// on crée encore un objet de type ContentValues qui va contenir les
nouvelles //valeurs passées en paramètres

ContentValues contentValues = new ContentValues();


contentValues.put("nom",n);
contentValues.put("prenom",p);
contentValues.put("filiere",f);

// on exécute la méthode update en fournissant le nom de la table, les


valeurs sous forme de contentvalues, on ajoute la condition id= ? ce qui
est equivalent à WHERE id= ? la valeur du (des) id(s) est (sont) celle(s)
passée(s) comme tableau de chaine de caractéres :

db.update("stagiaire",contentValues,"id=?",new String[]{id});
return true;
}
7. Supprimer des données : pour cela, on rajoute une autre méthode DeleteStagiaire qui prend
en paramétre l’identifiant du stagiaire à supprimer :

public Boolean DeleteStagiaire(String id){


SQLiteDatabase db= this.getWritableDatabase();
int retour = db.delete("stagiaire", "id=?",new String[]{id});
if (retour ==0) return false;
else return true;
}

On peut passer en paramètres le nom du stagiaire ou le nom et prénom, puis on effectue une
recherche dans la base afin de récupérer l’identifiant du stagiaire.

PART 3: Programmation événementielle au niveau de


la classe MainActivity.java
8. Dans la classe MainActivity, récupérer les differents composants graphiques et créer une
instance de la classe MyDB qu’on vient de créer :

public class MainActivity extends AppCompatActivity {


MyDB db = new MyDB(this);

85 ANNEE DE FORMATION 2017/2018 W.JAKJOUD


Button btn1,btn2,btn3,btn4;
EditText ed1, ed2,ed3,ed4;
ListView lst;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btn1 = (Button) findViewById(R.id.btn1);


btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
btn4 = (Button) findViewById(R.id.btn4);

ed1 = (EditText) findViewById(R.id.nom);


ed2 = (EditText) findViewById(R.id.prenom);
ed3 = (EditText) findViewById(R.id.filiere);
ed4 = (EditText) findViewById(R.id.id);

lst = (ListView) findViewById(R.id.lst);


9. Au niveau du bouton Ajouter, on exécute la méthode InsertStagiaire avec les valeurs issues
des zones de textes :
if(db.InsertStagiaire(ed1.getText().toString(),
ed2.getText().toString(),ed3.getText().toString())) {
Toast.makeText(getApplicationContext(), "ok", Toast.LENGTH_LONG).show();
ed1.setText("");
ed2.setText("");
ed3.setText("");
ed4.setText("");
}
else
Toast.makeText(getApplicationContext(), "Le Stagiaire n’a pas pu être
ajouté !!",Toast.LENGTH_LONG).show();
}

10. Pour l’affichage, on exécute seulement et simplement la méthode afficheStagiaire


11. Faites la même chose pour les autres boutons.

86 ANNEE DE FORMATION 2017/2018 W.JAKJOUD