2011-12-05 2 views
0

Dans mon application Android, j'insère et affiche des données à partir d'une base de données SQLite. Avant cela, je veux vérifier si la base de données est disponible ou non. Autrement dit, je veux vérifier si la table est disponible. Si elle est disponible, je veux aussi vérifier si elle n'est pas vide. Voici le pseudocodeComment vérifier la base de données est disponible ou non dans Android?

if (DB available) { 
    if (table available) { 
     if (table != empty) { 
      insertdata() 
     } 
    } 
} 
+0

Je pense que vous pouvez être en mesure de vérifier si vous avez votre fichier db dans la mémoire interne, si elle est là, cela signifie que db existe –

Répondre

0

Généralement dans Android il n'est pas nécessaire de vérifier explicitement si votre base de données est disponible. Le flux est que vous essayez d'obtenir une instance de base de données (en mode lecture ou écriture) et si la base de données n'existe pas, une procédure onCreate() est exécutée, ce qui devrait exécuter l'instruction DDL et créer une base de données pour la première fois. Dans votre instruction DDL, vous pouvez utiliser:

create table if not exists TABLE_NAME 

qui vous garantira que TABLE_NAME existe avant de l'interroger.

Vous pouvez utiliser getWritableDatabase() appelé SQLiteOpenHelper Objet. Il lancera SQLiteException s'il y a un problème avec la base de données.

Consultez le official documentation pour plus d'informations.

0

Généralement, vous n'avez pas besoin de vérifier l'existence d'une base de données à moins que le comportement de votre code ne change en fonction de si la base de données elle-même est nouvelle. Dans votre cas, vous voudrez toujours vérifier le contenu de la table même si la base de données n'est pas nouvelle. Si vous appelez SQLiteDatabase.openDatabase() SANS transmettre CREATE_IF_NECESSARY, une exception sera levée. Normalement, cependant, vous appelez simplement SQLiteDatabase.openOrCreateDatabase(). Après cela, vous vérifiez la table.

Vous pouvez vérifier l'existence d'une table avec la déclaration SELECT count(*) FROM sqlite_master WHERE name='<tablename>' AND type='table';

Questions connexes