2014-09-10 2 views
1

Quelle est la méthode recommandée pour stocker des données dans un fichier sqlite situé sur le système de fichiers du smartphone Android? J'ai l'intention de restaurer les données même après un redémarrage de l'appareil. Quelle est la différence entre "DaoMaster.createAllTables (db, true)" et "DaoMaster.createAllTables (db, false)"?greenDao: stocker des données dans un fichier sqlite sur Android

Actuellement, je suis en utilisant ce code dans le MainActivity.java:

db = SQLiteDatabase.openOrCreateDatabase(new File(getExternalFilesDir(null).getPath(), 
      "opendao.sqlite"), null); 
daoMaster = new DaoMaster(db); 
DaoMaster.createAllTables(db, true); 
daoSession = daoMaster.newSession(db); 
locationEntityDao = daoSession.getLocationEntityDao(); 
locationTraceEntityDao = daoSession.getLocationTraceEntityDao(); 
photoEntityDao = daoSession.getPhotoEntityDao(); 
photosEntityDao = daoSession.getPhotosEntityDao(); 
poiEntityDao = daoSession.getPoiEntityDao(); 
primitiveAttributesEntityDao = daoSession.getPrimitiveAttributesEntityDao(); 

je devais modifier le DaoMaster.java au:

public DaoSession newSession(SQLiteDatabase db) { 
    return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); 
} 

Répondre

0

Je ne suis pas tout à fait sûr si je comprends votre question. Que voulez-vous dire par "redémarrage de l'appareil"? Une usine resset? Avez-vous suivi le instructions sur le site greenDao? Je travaille avec greenDao depuis un moment et je n'ai jamais modifié le DaoMaster généré, il devrait fonctionner comme il est généré. En lisant le code, lorsque vous utilisez la valeur par défaut daoMaster.newSession(), le db utilisé est celui utilisé dans la création de daoMaster, donc votre modification ne devrait pas être nécessaire. Pour votre deuxième question, si vous suivez le code généré, vous verrez que la différence entre la définition du paramètre ifNotExist vrai ou faux dans createAllTables (SQLiteDatabase db, boolean ifNotExists). Ce booléen détermine si chaque table de la base de données doit être créée si elle existe déjà. Définie sur true, si une table est déjà dans la base de données, cette commande CREATE n'aura aucun effet.

Questions connexes