Как удалить базу данных SQLite из Android программным способом - PullRequest
147 голосов
/ 10 декабря 2010

Я хотел бы удалить файл базы данных из Android file system программно? Можно ли запустить скрипт оболочки adb, который, в свою очередь, запускает скрипт оболочки в пространстве Android для удаления базы данных? Могу ли я сделать это из JUnit контрольного примера (с вызовом system())?

Как мне удалить всю базу данных в Android? Мне нужно, чтобы все прошло, чтобы я мог проверить создание базы данных. Я могу отбросить таблицы, но этого недостаточно. Это в эмуляторе, а не в телефоне.

Ответы [ 11 ]

401 голосов
/ 12 декабря 2010

Получив свой контекст и узнав имя базы данных, используйте:

context.deleteDatabase(DATABASE_NAME);

Когда эта строка запускается, база данных должна быть удалена.

13 голосов
/ 10 декабря 2010

Просто наберите текст из вашей оболочки:

adb shell
cd /data/data
cd <your.application.java.package>
cd databases
su rm <your db name>.db
11 голосов
/ 30 сентября 2013

Статический метод SQLiteDatabase.deleteDatabase (File file) был добавлен в API 16. Если вы хотите писать приложения, поддерживающие более старые устройства, как вы это делаете?

Я пытался: file.delete ();

но это портит SQLiteOpenHelper.

Спасибо.

НИКОГДА НЕ УМНО! Позже я понял, что вы используете Context .deleteDatabase (). Context один прекрасно работает и удаляет журнал тоже. У меня работает.

Кроме того, я обнаружил, что мне нужно вызвать SQLiteOpenHelp.close () перед удалением, чтобы я мог затем использовать LoaderManager для его повторного создания.

10 голосов
/ 08 октября 2015

Попробуйте:

this.deleteDatabase(path); 

или

context.deleteDatabase(path);
6 голосов
/ 10 декабря 2010

Также из Eclipse вы можете использовать DDMS, что делает его действительно простым.

Просто убедитесь, что ваш эмулятор работает, а затем переключитесь на перспективу DDMS в Eclipse. У вас будет полный доступ к Проводнику, который позволит вам зайти и легко удалить всю базу данных.

4 голосов
/ 03 августа 2018
context.deleteDatabase("database_name.db");

Это может кому-то помочь. В противном случае вы должны упомянуть расширение, оно не будет работать.

3 голосов
/ 03 ноября 2014

context.deleteDatabase (DATABASE_NAME); удалит базу данных, только если все соединения закрыты. Если вы поддерживаете одноэлементный экземпляр для обработки вашего помощника базы данных - легко закрыть открытое соединение.

В том случае, если база данных-помощник используется в нескольких местах путем непосредственного создания экземпляра, deleteDatabase + killProcess выполнит эту работу, даже если некоторые соединения открыты. Это можно использовать, если в сценарии приложения нет проблем при перезапуске приложения.

0 голосов
/ 13 мая 2019

вы можете создать объект файла с текущим путем к базе данных , а затем удалить его при удалении файла из папки

    File data = Environment.getDataDirectory();
    String currentDBPath = "/data/com.example.demo/databases/" + DATABASE_NAME;
    File currentDB = new File(data, currentDBPath);
    boolean deleted = SQLiteDatabase.deleteDatabase(currentDB);
0 голосов
/ 04 апреля 2019

Удалить старую базу данных при удалении приложения.

Установка android: allowBackup = "false" в теге приложения в AndroidManifest.xml исправила проблему.Кажется, по какой-то странной причине ОС Android восстанавливала из резервной копии каждый раз, когда я развертывал приложение.

0 голосов
/ 03 апреля 2019

Я использовал метод удаления базы данных Android и база данных успешно удалена

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));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...