TP N°6: Initiation aux Bases de données SQLite

Ce TP propose une initiation à la gestion des bases de données SQLite dans une application Android. Il guide l’étudiant dans la création d’une interface graphique d’inscription, la mise en place d’une base de données SQLite, l’insertion de données et l’affichage d’une liste d’étudiants.

D'après le document TP N°6: Initiation aux Bases de données SQLite

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

TP N°6: Initiation aux Bases de données SQLite

Document source

TP N°6: Initiation aux Bases de données SQLite

Database Management Systems (Software Engineering) · PDF · 5 pages

Afficher l'aperçu du document

Consulter le document original →

Ce TP propose une initiation à la gestion des bases de données SQLite dans une application Android. Il guide l’étudiant dans la création d’une interface graphique d’inscription, la mise en place d’une base de données SQLite, l’insertion de données et l’affichage d’une liste d’étudiants. Pour réaliser ce TP, il est nécessaire de disposer d’un environnement de développement Android avec support SQLite et de connaissances de base en Java et Android Studio.

Objectifs

  • Créer une interface graphique d’inscription d’étudiants avec gestion des alertes.
  • Définir une base de données SQLite avec une table adaptée aux étudiants.
  • Programmer l’insertion d’un étudiant dans la base de données.
  • Afficher la liste des étudiants enregistrés dans une nouvelle activité.

Prérequis et installation

  • Environnement Android Studio configuré pour le développement Android.
  • Connaissances de base en Java et XML pour Android.
  • Compréhension des concepts de base de données relationnelle et SQLite.
  • Disposer d’un émulateur ou d’un appareil Android pour tester l’application.

Création de l’interface graphique d’inscription

La première étape consiste à créer une interface d’inscription pour les étudiants. Cette interface doit contenir les champs suivants :

  • Nom (id : Nom)
  • Prénom (id : Prenom)
  • Téléphone (id : Phone)
  • Email (id : Email)
  • Login (id : Login)
  • Mot de passe (id : Mdp)

Les boutons « VALIDER » (id : btnValider) et « ANNULER » (id : btnAnnuler) doivent également être présents.

Si l’utilisateur oublie de remplir un champ, un AlertDialog doit s’afficher pour l’en informer (voir écran 2). Si l’utilisateur clique sur « ANNULER », un autre AlertDialog doit apparaître (voir écran 3).

Pour cela, il faut programmer les deux messages d’alerte correspondants aux écrans 2 et 3 afin de gérer ces cas.

Un résultat correct est une interface fonctionnelle qui empêche la validation si un champ est vide et propose une annulation confirmée par une alerte.

Création de la base de données SQLite

Cette étape consiste à définir la structure de la base de données et à créer la table « etudiant » avec les colonnes suivantes :

  • nom
  • prenom
  • phone
  • email
  • login
  • mdp

Pour cela, créez une classe abstraite EtudiantBC contenant une classe interne abstraite EtudiantEntry qui définit les constantes suivantes :

public static final String TABLE_NAME = "etudiant";
public static final String COLUMN_NAME_NOM = "nom";
public static final String COLUMN_NAME_PRENOM = "prenom";
public static final String COLUMN_NAME_PHONE = "phone";
public static final String COLUMN_NAME_EMAIL = "email";
public static final String COLUMN_NAME_LOGIN = "login";
public static final String COLUMN_NAME_MDP = "mdp";

Définissez ensuite la chaîne SQL de création de la table :

public static final String SQL_CREATE_ENTRIES =
    "CREATE TABLE " + EtudiantEntry.TABLE_NAME + " (" +
    BaseColumns._ID + " INTEGER PRIMARY KEY," +
    EtudiantEntry.COLUMN_NAME_NOM + " TEXT," +
    EtudiantEntry.COLUMN_NAME_PRENOM + " TEXT," +
    EtudiantEntry.COLUMN_NAME_PHONE + " TEXT," +
    EtudiantEntry.COLUMN_NAME_EMAIL + " TEXT," +
    EtudiantEntry.COLUMN_NAME_LOGIN + " TEXT," +
    EtudiantEntry.COLUMN_NAME_MDP + " TEXT" +
    ");";

Ajoutez également la chaîne SQL pour supprimer la table :

public static final String SQL_DELETE_ENTRIES =
    "DROP TABLE IF EXISTS " + EtudiantEntry.TABLE_NAME;

Créez ensuite la classe EtudiantDBHelper qui étend SQLiteOpenHelper :

public class EtudiantDBHelper extends SQLiteOpenHelper {
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "PFE.db";

    public EtudiantDBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(EtudiantBC.SQL_CREATE_ENTRIES);
    }

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(EtudiantBC.SQL_DELETE_ENTRIES);
        onCreate(db);
    }

    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onUpgrade(db, oldVersion, newVersion);
    }
}

Cette classe gère la création et la mise à jour de la base de données.

Insertion d’un étudiant dans la base

Après avoir vérifié que tous les champs sont remplis lors du clic sur le bouton « VALIDER », insérez un étudiant dans la base avec le code suivant :

ContentValues values = new ContentValues();
values.put(EtudiantBC.EtudiantEntry.COLUMN_NAME_NOM, Nom.getText().toString());
values.put(EtudiantBC.EtudiantEntry.COLUMN_NAME_PRENOM, Prenom.getText().toString());
values.put(EtudiantBC.EtudiantEntry.COLUMN_NAME_PHONE, Phone.getText().toString());
values.put(EtudiantBC.EtudiantEntry.COLUMN_NAME_EMAIL, Email.getText().toString());
values.put(EtudiantBC.EtudiantEntry.COLUMN_NAME_LOGIN, Login.getText().toString());
values.put(EtudiantBC.EtudiantEntry.COLUMN_NAME_MDP, Mdp.getText().toString());

EtudiantDBHelper mDbHelper = new EtudiantDBHelper(getApplicationContext());
SQLiteDatabase db = mDbHelper.getWritableDatabase();

long newRowId = db.insert(
    EtudiantBC.EtudiantEntry.TABLE_NAME,
    null,
    values);

db.close();
mDbHelper.close();

Un résultat correct est l’insertion sans erreur et la récupération d’un identifiant de ligne valide (newRowId différent de -1).

Affichage de la liste des étudiants

Une fois un étudiant inséré, affichez la liste des étudiants dans une nouvelle activité ListEtudiant :

  1. Créez une interface contenant un ListView avec l’id idlistetu.
  2. Créez un layout Ligne_Etudiant.xml représentant une ligne de la liste, contenant deux TextView :
    • id = nometud pour le nom
    • id = preetud pour le prénom
  3. Dans la classe ListEtudiant, créez un attribut EtudiantDBHelper dbHelper et la méthode suivante :
private EtudiantDBHelper dbHelper = null;

public EtudiantDBHelper getDbHelper() {
    if (dbHelper == null) {
        dbHelper = new EtudiantDBHelper(this);
    }
    return dbHelper;
}
  1. Créez un adaptateur SimpleCursorAdapter pour relier la base de données à la liste :
private SimpleCursorAdapter adapter = null;

public SimpleCursorAdapter getAdapter() {
    if (adapter == null) {
        SQLiteDatabase db = getDbHelper().getReadableDatabase();
        Cursor c = db.rawQuery(
            "SELECT _id, " +
            EtudiantBC.EtudiantEntry.COLUMN_NAME_NOM + ", " +
            EtudiantBC.EtudiantEntry.COLUMN_NAME_PRENOM +
            " FROM " + EtudiantBC.EtudiantEntry.TABLE_NAME,
            null);

        adapter = new SimpleCursorAdapter(
            this,
            R.layout.ligne_etudiant,
            c,
            new String[] {
                EtudiantBC.EtudiantEntry.COLUMN_NAME_NOM,
                EtudiantBC.EtudiantEntry.COLUMN_NAME_PRENOM
            },
            new int[] { R.id.nometud, R.id.preetud },
            0);
    }
    return adapter;
}
  1. Dans la méthode onCreate de l’activité ListEtudiant, affectez l’adaptateur au ListView :
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_etudiant);
    ListView ListEtudiant = (ListView) findViewById(R.id.idlistetu);
    ListEtudiant.setAdapter(getAdapter());
}
  1. Enfin, depuis l’interface d’insertion, programmez la navigation vers cette activité après insertion réussie.

Un résultat correct est l’affichage d’une liste contenant les noms et prénoms des étudiants insérés.

Résultats attendus

  • Une interface d’inscription fonctionnelle avec gestion des alertes pour champs vides et annulation.
  • Une base SQLite contenant une table « etudiant » avec les colonnes spécifiées.
  • Insertion correcte d’un étudiant avec récupération d’un nouvel ID valide.
  • Affichage d’une liste dynamique des étudiants inscrits, montrant nom et prénom dans une nouvelle activité.

Pièges courants

  • Oublier de vérifier que les champs ne sont pas vides avant insertion, ce qui peut provoquer des erreurs.
  • Ne pas fermer la base de données après insertion, ce qui peut entraîner des fuites de ressources.
  • Erreur dans la chaîne SQL de création de table, notamment dans la déclaration des colonnes ou types.
  • Ne pas utiliser l’identifiant _id dans la requête SQL, ce qui est obligatoire pour un SimpleCursorAdapter.
  • Ne pas initialiser ou affecter correctement l’adaptateur au ListView, ce qui empêche l’affichage.
  • Oublier de gérer la navigation entre l’interface d’inscription et la liste des étudiants.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions