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 :



  • 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);
        } 

}


PersonneDA.java

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();
        
}
Merci ;)

Comments

Popular posts from this blog

Exportation et Importation de vos sites sous IIS7 ou IIS8