La base de données

La base de données.

Introduction

Android utilise SQLite comme base de données on l'accède à partir de la classe abstract SQLiteOpenHelper, qui aide à la création et l’utilisation des bases de données. On crée une classe hérite la classe SQLiteOpenHelper et réécrire la méthode onCreate (SQLiteDatabase), onUpgrade (SQLiteDatabase, int, int) et optionnellement onOpen (SQLiteDatabase), et cette classe prend en charge l'ouverture de la base de données si elle existe et elle créer si elle n'existe pas.

SQLiteOpenHelper

public abstract class SQLiteOpenHelper

Constructeurs publics:

1- public SQLiteOpenHelper (Context context, String name,SQLiteDatabase.CursorFactory factory, int version)

Créer un objet d'aide pour créer, ouvrir et / ou de gérer une base de données. Cette méthode retourne toujours très vite. La base de données n'est pas réellement créé ou ouvert jusqu'à ce que l'un des getWritableDatabase () ou getReadableDatabase () est appelée.

 Paramètres
context
à utiliser pour ouvrir ou créer la base de données.
name
du fichier de base de données, ou null pour une base de données en mémoire.
factory
à utiliser pour créer des objets du curseur, ou null pour la valeur par défaut.
version
numéro de la base de données (commençant à 1), si la base de données est plus âgé, onUpgrade (SQLiteDatabase, int, int) sera utilisé pour mettre à niveau la base de données, si la base de données est plus récente, onDowngrade (SQLiteDatabase, int, int) sera utilisé pour déclasser la base de données.

2- public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)

Créer un objet d'aide pour créer, ouvrir et / ou de gérer une base de données. La base de données n'est pas réellement créé ou ouvert jusqu'à ce que l'un des getWritableDatabase () ou getReadableDatabase () est appelée.
Accepte les param entrée: un exemple concret de DatabaseErrorHandler être utilisé pour gérer la corruption quand sqlite rapporte la corruption de base de données.

 Paramètres
context
à utiliser pour ouvrir ou créer la base de données.
name
du fichier de base de données, ou null pour une base de données en mémoire.
factory
à utiliser pour créer des objets du curseur, ou null pour la valeur par défaut.
version
numéro de la base de données (commençant à 1), si la base de données est plus âgé, onUpgrade (SQLiteDatabase, int, int) sera utilisé pour mettre à niveau la base de données, si la base de données est plus récente, onDowngrade (SQLiteDatabase, int, int) sera utilisé pour déclasser la base de données.
errorHandler
La DatabaseErrorHandler à utiliser lors de sqlite rapporte la corruption de base de données, ou null pour utiliser le gestionnaire d'erreur par défaut.

Certaines méthodes publiques:

1- public synchronized void close ()

Fermez tous les objets de base de données ouverte.

2- public SQLiteDatabase getReadableDatabase ()

Créer et / ou d'ouvrir une base de données. Ce sera le même objet retourné par getWritableDatabase () à moins qu'un problème, tel qu'un disque plein, la base de données nécessite d'être ouvert en lecture seule. Dans ce cas, un objet de base de données en lecture seule ne sera retourné. Si le problème est résolu, un futur appel à getWritableDatabase () peut réussir, dans ce cas, l'objet de base de données en lecture seule sera fermé et l'objet en lecture / écriture sera retourné à l'avenir.

Comme getWritableDatabase (), cette méthode peut prendre un certain temps à revenir, donc vous ne devriez pas appeler à partir du thread d'application principal, y compris à partir ContentProvider.onCreate ().

 Retours
Un objet de base valable jusqu'au getWritableDatabase () ou close () est appelée.
 Lance
SQLiteException
si la base de données ne peut pas être ouverte

3- public SQLiteDatabase getWritableDatabase ()

Créer et / ou d'ouvrir une base de données qui sera utilisée pour la lecture et l'écriture. La première fois c'est ce qu'on appelle, la base de données sera ouvert et onCreate (SQLiteDatabase), onUpgrade (SQLiteDatabase, int, int) et / ou onOpen (SQLiteDatabase) sera appelée.

Une fois ouvert avec succès, la base de données est mise en cache, de sorte que vous pouvez appeler cette méthode à chaque fois que vous devez écrire à la base de données. (Assurez-vous d'appeler close () lorsque vous n'avez plus besoin de la base de données.) Les erreurs telles que mauvaises permissions ou un disque complet peut causer cette méthode à l'échec, mais les futures tentatives peuvent réussir que si le problème est résolu.
Mise à jour de base de données peut prendre un certain temps, vous ne devez pas appeler cette méthode à partir du thread principal de l'application, y compris à partir ContentProvider.onCreate ().

 Retours
Une lecture / écriture objet de base de données valide jusqu'à close () est appelée
 Lance
SQLiteException
si la base de données ne peut pas être ouverte en écriture.

4- public abstract void onCreate (SQLiteDatabase db)

Appelé lorsque la base de données est créée pour la première fois. C'est là que la création de tables et de la population initiale des tables devrait se produire.

 Paramètres
db
la base de données.

5- public abstract void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)

Appelé lorsque la base de données doit être mise à jour. La mise en œuvre devrait utiliser cette méthode pour supprimer des tables, ajouter des tables, ou faire autre chose dont il a besoin pour passer à la nouvelle version de schéma.

La documentation SQLite ALTER TABLE peut être trouvée ici. Si vous ajoutez de nouvelles colonnes, vous pouvez utiliser ALTER TABLE pour les insérer dans une table active. Si vous renommez ou supprimez des colonnes que vous pouvez utiliser ALTER TABLE pour renommer l'ancienne table, puis créer la nouvelle table, puis remplir la nouvelle table avec le contenu de l'ancienne table.

Cette méthode s'exécute dans une transaction. Si une exception est levée, toutes les modifications seront automatiquement annulées.

 Paramètres
db
la base de données.
oldVersion
La version ancienne de base de données.
newVersion
La version nouvelle de base de données.

SQLiteDatabase

Pour qu'on puisse manipuler la base de données on doit utiliser la classe SQLiteDatabase qui expose des méthodes pour gérer une base de données SQLite. SQLiteDatabase a des méthodes pour créer, supprimer, exécuter des commandes SQL, et effectuer d'autres tâches courantes de gestion de bases de données. 
public final class SQLiteDatabase

Constantes:

1- public static final int CREATE_IF_NECESSARY

Ouvrir drapeau: Drapeau pour OpenDatabase (String, SQLiteDatabase.CursorFactory, int) pour créer le fichier de base de données si elle n'existe pas déjà.
Constante Valeur: 268435456 (0x10000000)

2- public static final int OPEN_READONLY

Ouvrir drapeau: Drapeau pour OpenDatabase (String, SQLiteDatabase.CursorFactory, int) pour ouvrir la base de données en lecture seule. C'est le seul moyen fiable d'ouvrir une base de données si le disque est plein.
Constante Valeur: 1 (0x00000001)

3- public static final int OPEN_READWRITE

Ouvrir drapeau: Drapeau pour OpenDatabase (String, SQLiteDatabase.CursorFactory, int) pour ouvrir la base de données pour la lecture et l'écriture. Si le disque est plein, cela peut échouer avant même que vous avez réellement écrire quoi que ce soit. Notez que la valeur de cet indicateur est 0, donc c'est la valeur par défaut. 
Constante Valeur: 0 (0x00000000)

Certaines methods public:

1- public int delete (String table, String whereClause, String[] whereArgs)

Méthode pratique pour la suppression de lignes dans la base de données.

 Paramètres
table
La table pour supprimer de
whereClause
La clause WHERE facultative à appliquer lors de la suppression. Passant null supprimera toutes les lignes.
 Retours
Le nombre de lignes affectées si une whereClause est passée, 0 sinon.

2- public static boolean deleteDatabase (File file)

Supprime une base de données, y compris son fichier journal et autres fichiers auxiliaires qui peuvent avoir été créés par le moteur de base de données.

 Paramètres
file
Le chemin du fichier de base de données.
 Retours
Vrai si la base de données a été supprimé avec succès.

3- public void execSQL (String sql)

Exécuter une instruction SQL unique qui n'est pas un SELECT ou une autre requête qui retourne des données.
Il n'a aucun moyen de retourner les données (telles que le nombre de lignes affectées). Au lieu de cela, vous êtes encouragés à utiliser insert (String, String, ContentValues), update (String, ContentValues, String, String []), etc…

 Paramètres
sql
L'instruction SQL à exécuter. Plusieurs instructions séparées par des points-virgules ne sont pas pris en charge.
 Lance
SQLException si la chaîne SQL n'est pas valide

4- public void execSQL (String sql, Object[] bindArgs)

Exécuter une instruction SQL unique qui n'est pas un SELECT / INSERT / UPDATE / DELETE.

Pour les commandes INSERT, utilisez l'option suivante à la place.
insert (String, String, ContentValues)

Pour les instructions UPDATE, utilisez l'option suivante à la place.
update (String, ContentValues, String, String [])

Pour DELETE, utilisez l'option suivante à la place.
delete (String, String, String [])

Par exemple, les éléments suivants sont de bons candidats pour l'utilisation de cette méthode:
ALTER TABLE
CREATE ou DROP table / trigger / view / index / table virtuelle
REINDEX
PRESSE
SAVEPOINT
PRAGMA ne renvoie aucune donnée

 Paramètres
sql
l'instruction SQL à exécuter. Plusieurs instructions séparées par des points-virgules ne sont pas pris en charge.
bindArgs
seulement byte [], String, Long et Double sont pris en charge dans bindArgs.
 Lance
SQLException si la chaîne SQL n'est pas valide.

5- public long insert (String table, String nullColumnHack, ContentValues values)

Méthode pratique pour insérer une ligne dans la base de données.

 Paramètres
table
la table d'insérer la ligne.
nullColumnHack
facultative; peut être nulle. SQL ne permet pas l'insertion d'une ligne complètement vide sans nommer au moins un nom de colonne. Si vos valeurs fournies est vide, aucun nom de colonne sont connus et une ligne vide ne peut pas être insérée. S'il n'est pas défini à null, le paramètre nullColumnHack indique le nom du nom de la colonne accepte les valeurs NULL à insérer explicitement une valeur NULL dans le cas où vos valeurs est vide.
values
cet objet contient les valeurs des colonnes initiales de la ligne. Les clés devraient être les noms de colonnes et les valeurs les valeurs des colonnes
 Retours
L'ID de ligne de la ligne nouvellement insérée, ou -1 si une erreur s'est produite.

6- public static SQLiteDatabase openDatabase (String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler)

Ouvrez la base de données en fonction de la OPEN_READWRITE drapeaux OPEN_READONLY CREATE_IF_NECESSARY et / ou NO_LOCALIZED_COLLATORS.

Définit les paramètres régionaux de la base de données pour la localisation en cours du système. Appelez setLocale (Locale) si vous souhaitez quelque chose d'autre.

Accepte les param entrée: un exemple concret de DatabaseErrorHandler être utilisé pour gérer la corruption quand sqlite rapporte la corruption de base de données.

 Paramètres
path
Le fichier de base de données à ouvrir et / ou de créer.
factory
Une classe factory optionnelle qui est appelé à instancier un curseur lorsque la requête est appelée, ou null pour défaut.
flags
Pour contrôler le mode d'accès de base de données.
errorHandler
L'obj DatabaseErrorHandler être utilisé pour gérer la corruption quand sqlite rapporte la corruption de base de données.
 Retours
La base de données nouvellement ouvert.
 Lance
SQLiteException si la base de données ne peut pas être ouvert.

7- public static SQLiteDatabase openDatabase (String path, SQLiteDatabase.CursorFactory factory, int flags)

Ouvrez la base de données en fonction de la OPEN_READWRITE drapeaux OPEN_READONLY CREATE_IF_NECESSARY et / ou NO_LOCALIZED_COLLATORS.
Définit les paramètres régionaux de la base de données pour la localisation en cours du système. Appelez setLocale (Locale) si vous souhaitez quelque chose d'autre.

 Paramètres
path
Le fichier de base de données à ouvrir et / ou de créer.
factory
Une classe factory optionnelle qui est appelé à instancier un curseur lorsque la requête est appelée, ou null pour défaut.
flags
Pour contrôler le mode d'accès de base de données.
 Retours
La base de données nouvellement ouvert.
 Lance
SQLiteException si la base de données ne peut pas être ouvert.

8- public static SQLiteDatabase openOrCreateDatabase (String path, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)

Equivalent à openDatabase(path, factory, CREATE_IF_NECESSARY, errorHandler). 

9- public static SQLiteDatabase openOrCreateDatabase (String path, SQLiteDatabase.CursorFactory factory)

Equivalent à openDatabase(path, factory, CREATE_IF_NECESSARY). 

10- public static SQLiteDatabase openOrCreateDatabase (File file, SQLiteDatabase.CursorFactory factory)

Equivalent à openDatabase(file.getPath(), factory, CREATE_IF_NECESSARY). 

11- public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

12- public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit, CancellationSignal cancellationSignal)

13- public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

14- public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

Interrogez la table donnée, retour un curseur sur le résultat.

 Paramètres
distinct
true si vous voulez chaque ligne doit être unique, sinon false.
table
Le nom de la table où on veut compiler cette requête.
columns
Une liste des colonnes qui devront revenir. Passant null retourne toutes les colonnes, ce qui est déconseillé pour éviter la lecture des données de stockage qui ne va pas être utilisé.
selection
Un filtre déclarant les lignes à retourner, formaté comme une clause SQL WHERE (hors WHERE elle-même). Passant null retourne toutes les lignes de la table donnée.
selectionArgs
Vous pouvez inclure '?' dans la sélection, qui sera remplacé par les valeurs de selectionArgs, dans leur ordre d'apparition dans la sélection. Les valeurs seront liées comme String.
groupBy
Un filtre déclarant comment regrouper les lignes, formaté comme clause SQL GROUP BY (sans la clause GROUP BY lui-même). Passant null provoque les lignes à ne pas être regroupés.
having
Un filtre déclarer les groupes de lignes à inclure dans le curseur, si regroupement de lignes est utilisé, formaté comme une clause SQL HAVING (à l'exclusion du HAVING lui-même). Passant null fera que tous les groupes de lignes à inclure.
orderBy
Comment ordonner les lignes, sous forme d'une clause SQL ORDER BY (sans la clause ORDER BY lui-même). Passant null utilise l'ordre de tri par défaut, qui peut être non ordonnés.
limit
Limite le nombre de lignes retournées par la requête, formatée comme la clause LIMIT. Passant null indique qu'il n'ya pas de LIMIT.
cancellationSignal
Un signal d'annuler l'opération en cours, ou null si aucun. Si l'opération est annulée, puis OperationCanceledException sera levée lorsque la requête est exécutée.
 Retours
Un objet Cursor, qui est positionné avant la première entrée.

15- public Cursor rawQuery (String sql, String[] selectionArgs, CancellationSignal cancellationSignal)

16- public Cursor rawQuery (String sql, String[] selectionArgs)

Exécute l'instruction SQL fournie et renvoie un curseur sur le résultat.

 Paramètres
sql
la requête SQL. La chaîne SQL ne doit pas être terminer par ;
selectionArgs
Vous pouvez inclure '?' dans la sélection, qui sera remplacé par les valeurs de selectionArgs, dans leur ordre d'apparition dans la sélection. Les valeurs seront liées comme String.
cancellationSignal
Un signal d'annuler l'opération en cours, ou null si aucun. Si l'opération est annulée, puis OperationCanceledException sera levée lorsque la requête est exécutée.
 Retours
Un objet Cursor, qui est positionné avant la première entrée.

17- public int update (String table, ContentValues values, String whereClause, String[] whereArgs)

Méthode pratique pour la mise à jour des lignes dans la base de données.

 Paramètres
table
La table pour mettre à jour.
values
cet objet contient des noms de colonnes et les nouvelles valeurs de colonnes. null est une valeur valide qui sera traduit à NULL.
whereClause
la clause WHERE optionnelle, à appliquer lors de la mise à jour. Passant null mettra à jour toutes les lignes.
 Retours
Le nombre de lignes affectées.

Comments