2013-07-24 4 views
0

J'ai créé une base de données pour mon application android qui contient des données statiques et ne nécessite pas de mise à jour/suppression des fonctionnalités ainsi lorsque l'application démarre, je veux vérifier la base de données existe et sinon exécute ma classe dbAdapter. Je sais que c'est une simple déclaration si mais je me demandais juste la manière la plus efficace de demander si la base de données existe.Quelle est la meilleure façon de vérifier la base de données existante avant de créer une nouvelle base de données sur Android

+0

Je pense, ce serait mieux si vous vérifiez le nombre d'enregistrements en db au démarrage de votre application. Pour cela, obtiens le curseur en sélectionnant toutes les données de db et appelle la méthode getCount() sur le curseur. – Santhosh

Répondre

0

utilisation openOrCreateDatabase méthode

public boolean checkDataBase(){ 

    SQLiteDatabase checkDB = null; 

    try{ 
     String myPath = DB_PATH + DB_NAME; 
     checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS); 

    }catch(SQLiteException e){ 

     //database does't exist yet. 
    } 

    if(checkDB != null){ 
     checkDB.close(); 
    } 

    return checkDB != null ? true : false; 
} 
0

pourquoi ne pas essayer d'exécuter le dbAdapter une seule fois, je veux dire lorsque l'application est d'abord installé i utilise sharedpreferences pour insérer des données qu'une seule fois, il suffit d'utiliser cette façon :

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

if (isFirstTime()) { 
// insert data 
} 

} 



private boolean isFirstTime() 
{ 
SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
boolean ranBefore = preferences.getBoolean("RanBefore", false); 
if (!ranBefore) { 
// first time 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putBoolean("RanBefore", true); 
editor.commit(); 
} 
return !ranBefore; 
    } 
Questions connexes