Intro SQL
Intro SQL
Intro SQL
avec SQLite
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(REQUETE_CREATION_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Dans notre cas, nous supprimons la base et les données pour en
// créer une nouvelle ensuite. Vous pouvez créer une logique de mise
// à jour propre à votre base permettant de garder les données à la
// place.
db.execSQL("drop table" + TABLE_PLANETES + ";");
// Création de la nouvelle structure.
onCreate(db);
} © JMF (Tous droits réservés) 10
}
Insérer des données dans
une SQLiteDatabase (1/2)
❚ Ayant obtenu une SQLiteDatabase, on utilise les méthodes de
cette classe pour faire des opérations sur la base de données
❚ public long insert (String table, String
nullColumnHack, ContentValues values) insert dans la table
table les valeurs indiquées par values
❚ values, de classe ContentValues, est une suite de couples (clé,
valeur) où la clé, de classe String, est le nom de la colonne et
valeur, sa valeur
❚ Bref on prépare tout, la ligne à insérer en remplissant values par
des put() successifs puis on lance insert()
❚ Exemple : /**
* Insère une planète dans la table des planètes.
*/
public long insertPlanete(Planete planete) {
ContentValues valeurs = new ContentValues();
valeurs.put(COLONNE_NOM, planete.getNom());
valeurs.put(COLONNE_RAYON, planete.getRayon());
© JMF (Tous droits réservés) 11
return maBaseDonnees.insert(TABLE_PLANETES, null, valeurs);
}
Insérer des données dans
une SQLiteDatabase (2/2)
❚ Le second argument nullColumnHack est le nom de colonne qui
aura la valeur NULL si values est vide. Cela est du au fait que
SQLite ne permet pas de lignes vides. Ainsi avec cette colonne, au
moins un champ dans la ligne aura une valeur (= NULL). Bref cela
sert seulement lorsque values est vide !
❚ Cette méthode insert() retourne le numéro de la ligne insérée ou
-1 en cas d'erreur
❚ En fait cette insertion est le Create (C) de CRUD
❚ Euh, si on les met dans une interface, elles sont évidemment toutes
public (static final)
/**
* Récupère une planète en fonction de son nom.
* @param nom
* Le nom de la planète à retourner.
* @return La planète dont le nom est égale au paramètre 'nom'.
*/
public Planete getPlanete(String nom) {
Cursor c = maBaseDonnees.query(TABLE_PLANETES, new String[] {
COLONNE_ID, COLONNE_NOM, COLONNE_RAYON }, null, null, null,
COLONNE_NOM + " LIKE " + nom, null);
© JMF (Tous droits réservés)
return cursorToPlanete(c); 21
}
Le code du DAO (2/4)
// La méthode qui fait le lien entre les bidouilles Android SQL (Cursor) et
// l'objet "métier" Planete
private Planete cursorToPlanete(Cursor c) {
// Si la requête ne renvoie pas de résultat
if (c.getCount() == 0)
return null;
❚ Le LayoutParams est un
android.view.ViewGroup.LayoutParams