Bienvenue ,voici le nouvel tutoriel qui s'intéresse sur la création des bases de données sous Android pour stocker des données . En effet , plusieurs application ont besoin de stocker des données. : La simple méthode c'est d'utiliser SQLite
.Les bases de données ,que vous créez, seront accessibles par le nom à une classe dans l'application, mais pas en dehors de l'application. Ici, nous allons voir comment utiliser l'API SQLite pour effectuer des opérations courantes de base de données.
.Les bases de données ,que vous créez, seront accessibles par le nom à une classe dans l'application, mais pas en dehors de l'application. Ici, nous allons voir comment utiliser l'API SQLite pour effectuer des opérations courantes de base de données.
On va voir :
- Comment commencer à utiliser l'API SQLite?
- Comment créer de nouvelles tables de base de données et base de données?
- Comment effectuer les opérations CRUD " C reate R ead, U pdate et D elete " ?
Pour les curieux voici l'architecture générale : (& pour plus des informations visiter SQLite )
... & Après ?
Nous allons construire une application qui permet de stocker et récupérer des informations d'une base . Notre application sera un peu générale ( vous pouvez l'utiliser et la modifier selon vos besoins : N'oubliez GNU
. )
Notre projet va contenir 3 classes :
- Exemple.java : Classe qui contient toutes les méthodes getter et setter pour maintenir un exemple de d'information ( ex: livre[id, titre,auteur,prix] etc. )unique comme un objet.
- MainActivity.java : Classe principale
- SQLiteDatabaseHandler.java : Classe pour gérer tous les opérations CRUD de notre base de données (Create, Read, Update et Delete) .
1. Création d'un nouveau projet :
Alors pour commencer cliquez sur File >>> New >>> Android Application Project. Il se peut que le menu Android Project ne soit pas directement disponible, il faut alors faire File >>> New >>> Other… >>> Android >>>Android Application Project. Une fenêtre de création de nouveau projet Android va s’ouvrir et vous devrez y renseigner le nom du projet, la version minimal du SDK, le nom de l’application etc.- Nom de l'application: SQL Exemple EAC- Nom du projet: SQLExempleEAC-Nom de package: eac.tutoriel.sqlite2. Création de la classe Exemple.java :
Classe qui contient toutes les méthodes getter et setter de maintenir un exemple de d'information unique comme un objet.Dans notre cas , on va définir des variables générales (col1, col2, col3, col4 )Les col_i peuvent êtres la signification de vos données (prix, id, nom, age etc. )On va générer les méthodes getters et setters des variables (Shift+Alt+S, puis source puis generate getters and setters , cocher les variables puis Ok) ,enfin on va créer 2 constructeurs dont l'un est vide
Exemple.java:package eac.tutoriel.sqlite;public class Exemple {// variables privéesint col1;String col2;String col3;String col4;//Constructeur videpublic Exemple(){}//Constructeurpublic Exemple(String col2, String col3, String col4) {super();this.col2 = col2;this.col3 = col3;this.col4 = col4;}//les méthodes getter & settepublic int getCol1() {return col1;}public void setCol1(int col1) {this.col1 = col1;}public String getCol2() {return col2;}public void setCol2(String col2) {this.col2 = col2;}public String getCol3() {return col3;}public void setCol3(String col3) {this.col3 = col3;}public String getCol4() {return col4;}public void setCol4(String col4) {this.col4 = col4;}@Overridepublic String toString() {return "Exemple [col1=" + col1 + ", col2=" + col2 + ", col3=" + col3+ ", col4=" + col4 + "]";}}3. Création de la classe SQLiteDatabaseHandler.java :
Classe qui s'étend de SQLiteOpenHelper pour gérer tous les opérations CRUD de notre base de données (Create, Read, Update et Delete) .
public class SQLiteDatabaseHandler extends SQLiteOpenHelper{ }
Ajouter les méthodes onCreate() [pour la créer la base] ,onUpgrade() [pour la mise à niveau de la base ], et le constructeur :public class SQLiteDatabaseHandler extends SQLiteOpenHelper{@Overridepublic void onCreate(SQLiteDatabase arg0) {// TODO Auto-generated method stub}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {// TODO Auto-generated method stub}Créons maintenant de constantes de types chaîne de caractères : l'un qui contient le nom de la base l'autre sa version://Version base de donnéesprivate static final int DATABASE_VERSION = 1;// Nom du baseprivate static final String DATABASE_NAME = "BaseExemple";//Constructeurpublic SQLiteDatabaseHandler(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}* Dans la méthode onCreate() , on va créer notre table : TableExemple avec 4 colonnes (col1:int, col2,col3,col4: String ):@Overridepublic void onCreate(SQLiteDatabase db) {// commande SQL pour Créer la table:TableExemple(col1,col2,col3,col4)String CREATION_TABLE_EXEMPLE = "CREATE TABLE TableExemple ( " +"col1 INTEGER PRIMARY KEY AUTOINCREMENT, " +"col2 TEXT, "+"col3 TEXT, "+"col4 TEXT )";// creation de la table :TableExempledb.execSQL(CREATION_TABLE_EXEMPLE);}*Dans la méthode onUgrade() : on va supprimer la table de la base (S'elle existe) et on crée une autre vide (renouvellemnt ):@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// supprimer la table s'elle existedb.execSQL("DROP TABLE IF EXISTS TableExemple");// creation d'une nouvelle table videthis.onCreate(db);}A cette étape nous avons créer notre base avec sa table vide , il nous reste que les opérations sur les données (Supprimer,Ajouter,Afficher, Modifier).Alors on va ajouter 5 méthodes :* ajoutExemple(Exemple ex)* modifer(Exemple ex)* supprimer(Exemple ex)* affiche(Int col1)* afficheTout()Avant tout , pour faciliter le codage ,on va créer des variables :// Les noms du Colonnes de la table private static final String KEY_COL1 = "col1"; private static final String KEY_COL2 = "col2"; private static final String KEY_COL3 = "col3"; private static final String KEY_COL4 = "col4"; private static final String[] COLONNES= {KEY_COL1,KEY_COL2,KEY_COL3,KEY_COL4};
1. ajoutExemple(Exemple ex):
On va utiliser ConentValues : cette classe est utilisée pour stocker un ensemble de valeurs.
public void ajoutExemple(Exemple ex) {Log.d("ajoutExemple :", ex.toString());// 1.obtenir l'accée à la baseSQLiteDatabase db = this.getWritableDatabase();// 2. creation d'un ContentValues pour ajouter une ligne dans la base (col2,col3,col4)ContentValues values = new ContentValues();values.put(KEY_COL2, ex.getCol2()); // obtenir col2 (get col2)values.put(KEY_COL3, ex.getCol3()); // get col3values.put(KEY_COL4, ex.getCol4()); // get col4// 3. insertiondb.insert("TableExemple", // tablenull, //nullColumnHackvalues); // les valeurs// 4. fermer la connexiondb.close();}
2. modifier(Exemple ex):
C'est presque comme l'ajout , mais on va mettre à jour une ligne de la table à partir de son clé primaire (col1 :int) :public int modifier(Exemple ex) {// 1. get reference to writable DBSQLiteDatabase db = this.getWritableDatabase();// 2. creation d'unContentValuesContentValues values = new ContentValues();values.put("col2", ex.getCol2());values.put("col3", ex.getCol3());values.put("col4", ex.getCol4());// 3. mise à jour une ligneint i = db.update("TableExemple", //tablevalues, // column/value"col1 = ?", // selectionsnew String[] { String.valueOf(ex.getCol1()) }); //selection args// 4. fermer la connexionedb.close();return i;}
3. supprimer(Exemple ex):
Méthode qui permet de supprimer une ligne de la table à partir de col1 (expemple : Id):
public void supprimer(Exemple ex) {
// 1. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();// suppressiondb.delete("TableExemple", //nom de la table"col1 = ?",new String[] { String.valueOf(ex.getCol1()) }); //selections argsdb.close();//logLog.d("delete: ", ex.toString());}
4. afficherTout():
Méthode qui permet de mettre tout les données de la table dans une liste , et la retourne.
public
List<Exemple> afficheTout() {
List<Exemple>
exemples = new
LinkedList<Exemple>();
//
1. la commande SQL
String
query = "SELECT * FROM
TableExemple";
//
2. accée à la base
SQLiteDatabase
db = this.getWritableDatabase();
Cursor
cursor = db.rawQuery(query, null);
//
3. parcourir chaque ligne et l'ajout dans la liste
Exemple
ex = null;
if
(cursor.moveToFirst())
{
do
{
ex
= new
Exemple();
ex.setCol1(Integer.parseInt(cursor.getString(0)));
ex.setCol2(cursor.getString(1));
ex.setCol3(cursor.getString(2));
ex.setCol4(cursor.getString(3));
//
ajouter les inforamtions de chque ligne à la liste EXEMPLES
exemples.add(ex);
}
while
(cursor.moveToNext());
}
Log.d("afficherTout()",
exemples.toString());
//
retourner les données enregistrées dans la table
return
exemples;
}
5. afficher(int col1):
Méthode qui permet d'afficher les données d'une ligne à partir sa la clé primaire
public
Exemple afficher(int
col1){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor =
db.query("TableEexemple",
// a. table
COLONNES,
// b. column names
" col1 = ?",
// c. selections
new
String[] { String.valueOf(col1)
}, // d. selections args
null,
// e. group by
null,
// f. having
null,
// g. order by
null);
// h. limit
if
(cursor != null)
cursor.moveToFirst();
Exemple ex = new
Exemple();
ex.setCol1(Integer.parseInt(cursor.getString(0)));
ex.setCol2(cursor.getString(1));
ex.setCol3(cursor.getString(2));
ex.setCol4(cursor.getString(3));
//log
Log.d("afficher("+col1+")",
ex.toString()) ;
return
ex;
}
4. MainActivity.java :
Dans le MainActivity , on peut tout faire
, pour moi j'ai écrit :
public
class
MainActivity extends
Activity {
SQLiteDatabaseHandler
db;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db=new
SQLiteDatabaseHandler(this);
db.ajoutExemple(new
Exemple("enis","android","club"));//ligne1
db.ajoutExemple(new
Exemple("ENIS","ANDROID","CLUB"));//ligne2
List<Exemple>
list = db.afficheTout();
}
}
et mon résultat s'affiche dans LogCat :
Vous pouvez tout faire et adapter cette tutoriel dans votre application , et n'hésitez pas de poser des questions si vous avez un problème 
Bonjour, j'ai suivi pas à pas tout le tutoriel (je suis complètement débutante) et ça fonctionne. Petite question (peut être bête) comment faire pour afficher la table créé dans une vue? que ce soit champs par champs ou sous forme de tableau?
RépondreSupprimerMerci pour votre aide!