Vous êtes sur la page 1sur 4

SQLite pour Android

On veut, dans ce TP, construire une application Android qui permet de grer des contacts (essentiellement un nom associ un numro de tlphone). Ces contacts seront mis dans une base de donnes Android gre par SQLite.

Construction de la base de donnes


1) Dfinir une classe Contact contenant les informations :
public class Contact { private int _id; private String nom; private String numTelephone; ... }

Complter cette classe avec des accesseurs et des constructeurs appropris ( la souris sous Eclipse !) 2) Construire un "Database Helper" permettant de grer une base de donnes. Le dbut de cette classe est :
public class LeDatabaseHandler extends SQLiteOpenHelper { !ll Static "ariables Database #ersion private static final int DATABASE_VERSION $ %; Database &ame private static final String DATABASE_NAME $ 'contacts(anager'; Contacts table name private static final String TABLE_CONTACTS $ 'contacts'; Contacts Table Columns names private static final String KEY_ID $ 'id'; private static final String KEY_NAME $ 'name'; private static final String KEY_PH_NO $ 'phone_number'; ! compl)ter ... }

3) Complter cette classe de sorte : a) crer la base de donnes b) pouvoir insrer des Contacts dans cette base c) rcuprer tous les contacts de la base l'aide de la mthode :
public List*Contact+ get!llContacts,- { ... }

4) Manipuler cette base l'aide d'une activit principale possdant la mthode :


public void onCreate,.undle sa"ed/nstanceState- { super.onCreate,sa"ed/nstanceState-; setContent#ie0,1.la2out.activity_main-; LeDatabaseHandler db $ new LeDatabaseHandler,this-; 3

TP Android SQLite

1/4

Jean-Marc Farinone

3 Operation C14D 3 Log.d,'5(6'7 '/nsertion de Contact'-; db.addContact,new Contact,'5o'7 '8%99999999'--; db.addContact,new Contact,'5ac:'7 '8%88888888'--; db.addContact,new Contact,';illiam'7 '8<========'--; db.addContact,new Contact,'!"erel'7 '8<>>>>>>>>'--; 1eading all contacts Log.d,'5(6'7 'Lecture des Contacts'-; List*Contact+ contacts $ db.get!llContacts,-; for ,Contact cn ? contacts- { String log $ '/d? '@cn.get/D,-@' 7&ame? ' @ cn.get&ame,- @ ' 7Ahone? ' @ cn.getAhone&umber,-; ;riting Contacts to log Log.d,'5(6'7 log-; } }

Cette partie est grandement inspir de l'article de Ravi Tamada


http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

Voici une partie additionnelle permettant de mieux manipuler la base de donnes.

Une IHM pour manipuler une base de donnes


5) Dfinir une activity qui fait afficher :

il s'agit d'une TextView ("Voulez vous ?") suivi d'une ListView 4 items. 6) Ajouter le code de sorte que lorsque l'utilisateur clique sur l'item "Initialisation de la base !", la base (table) est recre avec 4 Contacts. On rappelle que le code de gestion d'une ListView est : TP Android SQLite 2/4 Jean-Marc Farinone

l".setOn/temClic:Listener,new On/temClic:Listener,- { public void on/temClic:,!dapter#ie0*B+ parent7 #ie0 "ie07 int position7 long id- { if ,position $$ 9- { traitement si lCutilisateur a choisi le premier item de la List#ie0 } else { ... } } }-;

o l" est la ListView. 7) De mme, crivez le code qui affiche tous les contacts lorsque l'utilisateur a choisi le premier item. On pourra utiliser un TableLayout.

8) Ecrire une activity qui affiche :

Cette activit est lance lorsque l'utilisateur slectionne l'item "Ajouter un contact". Ecrire le code permettant d'ajouter un Contact dans la base de donnes grce cette interface. 9) Ecrire l'activit qui prsente tous les contacts dans une ListView pour pouvoir en modifier. L'enchanement des activits doit tre :

TP Android SQLite

3/4

Jean-Marc Farinone

Par la suite, lorsque l'utilisateur choisit un des contacts, une nouvelle activit est affiche, initialise par le nom du Contact modifier. L'enchanement des activits peut tre :

Il faudra donc passer le Contact d'une activit une autre. Pour cela on utilisera le code (peut tre adapter) :
Contact ct!(odiDier $ arContacts.get,position-; /ntent i $ new /ntent,get!pplicationConteEt,-7 Contact!(odiDier!cti"it2.class-; .undle b $ new .undle,-; b.putSerialiFable,Constants.CONTACT7 ct!(odiDier-; i.putGEtras,b-; start!cti"it2,i-;

Pour rcuprer ce Contact dans l'activit destinataire on peut crire le code :


.undle b $ this.get/ntent,-.getGEtras,-; if ,b H$ null- { ct $ ,Contact-,b.getSerialiFable,Constants.CONTACT--; }

10) Enrichir l'activit qui prsente tous les contacts dans une ListView pour pouvoir en dtruire le contact choisi par l'utilisateur. On pourra construire de nouvelles activits ou enrichir celles dj dveloppes. Conclusion On a bien mis en place toutes les oprations CRUD, Create (question 8 et 6), Read (question 7), Update (question 9), Delete (question 10)

TP Android SQLite

4/4

Jean-Marc Farinone