157 votes

Comment supprimer une base de données SQLite d'Android de manière programmatique

Je voudrais supprimer le fichier de la base de données de la Android file system de manière programmatique ? Est-ce que je peux avoir un shell script lancé adb qui à son tour exécute un shell script dans l'espace Android pour effectuer la suppression de la base de données ? Puis-je faire cela à partir d'un JUnit de test (avec un system() appel) ?

Comment supprimer une base de données entière dans Android ? J'ai besoin de faire disparaître l'ensemble de la base pour pouvoir tester la création de la base de données. Je peux supprimer des tables, mais ce n'est pas suffisant. Ceci est dans l'émulateur, pas sur un téléphone.

6voto

xtempore Points 1286

De plus, à partir d'Eclipse, vous pouvez utiliser DDMS, ce qui rend les choses vraiment faciles.

Assurez-vous simplement que votre émulateur fonctionne, puis passez à la perspective DDMS dans Eclipse. Vous aurez un accès complet à l'explorateur de fichiers, ce qui vous permettra de supprimer facilement toute la base de données.

1 votes

Cela fonctionne-t-il avec un appareil téléphonique réel ? Je n'ai pu voir aucun sous-dossier sous le dossier de données en le visualisant en mode DDMS.

1 votes

Mais cette question concerne la suppression programmatique de la base de données ?

4voto

Aun Points 451

Context.deleteDatabase(DATABASE_NAME) ; supprimera la base de données uniquement si toutes les connexions sont fermées. Si vous maintenez une instance singleton pour gérer votre aide de base de données, il est facile de fermer la connexion ouverte.

Si l'assistant de base de données est utilisé à plusieurs endroits en l'instanciant directement, les fonctions deleteDatabase + killProcess feront le travail même si certaines connexions sont ouvertes. Cela peut être utilisé si le scénario de l'application ne pose pas de problème de redémarrage de l'application.

4voto

Anurag Mishra Points 83

Suppression de l'ancienne Db lors de la désinstallation de l'application.

Réglage de Android:allowBackup="false" (en anglais) dans la balise de l'application dans AndroidManifest.xml a réglé le problème. Il semble que pour une raison étrange, l'OS Android restaurait à partir d'une sauvegarde à chaque fois que je déployais l'application.

3voto

Vous pouvez créer un objet fichier du chemin de la base de données actuelle et ensuite le supprimer comme nous supprimons un fichier du dossier

    File data = Environment.getDataDirectory();
    String currentDBPath = "/data/com.example.demo/databases/" + DATABASE_NAME;
    File currentDB = new File(data, currentDBPath);
    boolean deleted = SQLiteDatabase.deleteDatabase(currentDB);

0voto

Afshin Razaghi Points 55

J'ai utilisé la méthode de suppression de la base de données Android et la base de données a été supprimée avec succès.

public bool DeleteDatabase()
        {
            var dbName = "TenderDb.db";
            var documentDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            var path = Path.Combine(documentDirectoryPath, dbName);
            return Android.Database.Sqlite.SQLiteDatabase.DeleteDatabase(new Java.IO.File(path));
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X