SQLite Sous Android
Cet article explique comment utiliser la base de données SQLite dans vos applications Android.
Pour notre exemple, nous allons mette ne place une base de données « dbpersonne.db » contenant une seul table « personne », pour cela nous utiliserons les classes suivantes :
Nous allons donc commencer par la création de la classe Personne
Personne.java
Pour notre exemple, nous allons mette ne place une base de données « dbpersonne.db » contenant une seul table « personne », pour cela nous utiliserons les classes suivantes :
- SQLiteOpenHelper: Pour créer et mettre à jour une base de données dans votre application Android
- ContentValue: Permet de définir clés / valeurs. La clé représente la colonne de la table et la valeur représente le contenu à enregistrer dans cette colonne.
- Cursor: Permet de retourner l'ensemble des résultats retournés par une requête
Nous allons donc commencer par la création de la classe Personne
Personne.java
package com.landolsi.sqlite;
public class Personne {
private
int cin;
private
String name;
public
Personne(){}
public
Personne(int cin,String name){
this.name = name;
this.cin = cin;
}
public
int getCin() {
return
this.cin;
}
public
void setCin(int cin) {
this.cin = cin;
}
public
String getName() {
return
this.name;
}
public
void setName(String name) {
this.name = name;
}
}
MyDBPersonne.java
Cette classe hérite de SQLiteOpenHelper nous permettant la création de la base et ces tables.
Cette classe appel deux fonction:
- onCreate: est appelé si la base de données est accessible, mais pas encore créé.
- onUpgrade: est appelé si la version de la base est augmenté.
package com.landolsi.sqlite;
import android.content.Context;
import android.database.sqlite.*;
public class MyDBPersonne extends SQLiteOpenHelper {
private static final String CREATE_BDD = "CREATE TABLE personne (cin INTEGER PRIMARY KEY, name TEXT NOT NULL);";
public MyDBPersonne(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BDD);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE peronne;");
onCreate(db);
}
}
Cette Class permettra de gérer les différentes requetés à exécuter sur la table (insertion, select, delete, update)
package com.landolsi.sqlite;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import java.util.ArrayList;
import android.database.sqlite.SQLiteDatabase;
public class PersonneDA {
private static final int DB_VERSION = 1;
private static final String DB_NAME = "dbpersonne.db";
private static final String TABLE_NAME = "personne";
private static final String TABLE_COL_CIN = "cin";
private static final int NUM_TABLE_COL_CIN = 0;
private static final String TABLE_COL_NAME = "name";
private static final int NUM_TABLE_COL_NAME = 1;
private SQLiteDatabase bdd;
private MyDBPersonne myDBPersonne;
public PersonneDA(Context context){
myDBPersonne = new MyDBPersonne(context, DB_NAME, null, DB_VERSION);
}
public void open(){
bdd = myDBPersonne.getWritableDatabase();
}
public void close(){
bdd.close();
}
public SQLiteDatabase getBDD(){
return bdd;
}
public long Insert (Peronne peronne){
ContentValues values = new ContentValues();
values.put(TABLE_COL_CIN, personne.getCin());
values.put(TABLE_COL_NAME, personne.getName());
//on insère dans la table via le ContentValues
return bdd.insert(TABLE_NAME, null, values);
}
public int Update(int cin, Personne personne){
ContentValues values = new ContentValues();
values.put(TABLE_COL_CIN, personne.getCin());
values.put(TABLE_COL_NAME, personne.getName());
return bdd.update(TABLE_NAME, values, TABLE_COL_CIN + " = " +cin, null);
}
public Personne GetByCin(int cin){
Cursor c = bdd.query(TABLE_NAME, new String[] {TABLE_COL_CIN, TABLE_COL_NAME}, TABLE_COL_CIN + " = " + cin, null, null, null, null);
if (c.getCount() == 0)
return null;
c.moveToFirst();
Personne personne = new Personne();
personne.setCin(c.getInt(NUM_TABLE_COL_CIN));
personne.setName(c.getString(NUM_TABLE_COL_NAME));
c.close();
return Peronne;
}
public ArrayList<Personne> GetAll(){
Cursor c = bdd.rawQuery("select * from peronne where name like ='%?%' " , new String [] {""});
if (c.getCount() == 0)
return null;
ArrayList<Personne> lstPersonne = new ArrayList<Personne>() ;
if(c.moveToFirst()){
do{
Personne personne = new Personne();
personne.setCin(c.getInt(NUM_TABLE_COL_CIN));
personne.setName(c.getString(NUM_TABLE_COL_NAME));
lstPersonne.Add(personne)
}while(c.moveToNext());
}
c.close();
return lstPersonne;
}
}
Enfin, il ne vous reste que le code de test à mettre en place dans l'une de vos activity et puis lancer l'application
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PersonneDA personneDA = new PersonneDA(this);
Personne personne = new Personne(05587474, "Foulen ben Foulen");
personneDA.open();
personneDA.Insert(peronne);
personneDA.close();
}

Comments