Pourquoi utiliser SQLiteOpenHelper sur SQLiteDatabase?
Dans mon activité, j'ai par exemple
SQLiteDatabase db = openOrCreateDatabase(Preferences.DB_NAME, Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)");
Cursor dbResult = db.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
db.close();
Quel est l'avantage de l'utilisation de SQLiteOpenHelper comme
DatabaseHelper helper = new DatabaseHelper(this);
SQLiteDatabase db = helper.getWriteableDatabase();
SQLiteDatabase db_2 = helper.getReadableDatabase();
Cursor dbResult = db_2.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
helper.close();
Classe elle-même
public class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, Preferences.DB_NAME, null, Preferences.DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)";
db.execSQL(query);
db.close();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Vous devez vous connecter pour publier un commentaire.
SQLiteDatabase
SQLiteOpenHelper
Je vais dire ceci, la onUpgrade qui vient avec SQLiteOpenHelper vient VRAIMENT pratique lors de la mise à jour de votre application. C'est principalement pour la création et la mise à niveau de version /de gestion. SQLiteDatabase est principalement pour les opérations CRUD (que vous pouvez créer avec elle, mais c'est ce que SQLiteOpenHelper est pour).
SQLiteOpenHelper
appelle en fait les méthodes statiques deSQLiteDatabase
classe.SQLiteOpenHelper fournit des utilitaires pour simplifier les tâches de création et initialisation de la base de données si elle n'est pas déjà créé et de convertir le contenu de la base lorsque votre application est la mise à niveau et la base de données des modifications de schéma.
Si vous avez un très simple schéma de base de données, il n'a pas vraiment beaucoup, mais pour rien de compliqué, c'est une certaine aide. Il permet de s'assurer que tous les fiddly conditions de bords sont couverts de sorte que vous n'avez pas à, comme mettre de transactions dans tous les bons endroits pour éviter la corruption de base de données.
Au-dessus des autres réponses, une caractéristique très importante dans
SQLiteOpenHelper
classe, il dispose de 2 méthodes synchronisées,getWritableDatabase()
etgetReadableDatabase()
.Cela signifie que vos opérations de base de données sont thread-safe.
Extrait de Code de
SQLiteOpenHelper
classeet
Comme il est écrit dans le développeur officiel de référence
Donc SQLiteOpenHelper faire des choses assez facile.
Vous pouvez utiliser ce lien pour apprendre comment gérer SQLite avec SQLiteOpenHelper. SQLiteOpenHelper Tutoriel.