Как программно удалить базу данных SQLite из Android

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

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

Ответ 1

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

context.deleteDatabase(DATABASE_NAME);

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

Ответ 2

Легко просто ввести из оболочки:

adb shell
cd /data/data
cd <your.application.java.package>
cd databases
su rm <your db name>.db

Ответ 3

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

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

но он запутывает SQLiteOpenHelper.

Спасибо.

NEVER MIND! Позже я понял, что вы используете Контекст.deleteDatabase(). Контекст отлично работает и удаляет журнал. Работает для меня.

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

Ответ 4

Try:

this.deleteDatabase(path); 

или

context.deleteDatabase(path);

Ответ 5

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

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

Ответ 6

context.deleteDatabase("database_name.db");

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

Ответ 7

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

Если база данных используется в нескольких местах, создавая экземпляр напрямую, файл deleteDatabase + killProcess выполнит эту работу, даже если некоторые соединения открыты. Это можно использовать, если в сценарии приложения нет проблем при перезапуске приложения.

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

Я использовал метод удаления базы данных 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));
        }

Ответ 11

Я использовал следующее для "форматирования" базы данных на устройстве после того, как изменил структуру базы данных в активах. Я просто раскомментирую строку в MainActivity, когда хочу, чтобы база данных снова читалась из ресурсов. Это приведет к сбросу значений и структуры базы данных устройства в соответствии с занятой базой данных в папке активов.

    //database initialization. Uncomment to clear the database
    //deleteDatabase("questions.db");

Далее я реализую кнопку, которая будет запускать deleteDatabase, чтобы пользователь мог сбросить свой прогресс в игре.

Ответ 12

В Диспетчере приложений вы можете удалить все приложение с данными. Или просто данные сами. Это включает в себя базу данных.

  • Перейдите к настройкам.. Вы можете перейти в меню настроек либо в меню ваших приложений или, на большинстве телефонов, потянув уведомление выдвижной ящик и нажав кнопку там.

  • Выберите подменю Службы. На некоторых телефонах это меню будет иметь немного другое имя, например Application Manager.

  • Проведите вправо до Список всех приложений. Игнорировать списки запущенных и загружаемых приложений. Вам нужен список всех приложений.

  • Выберите приложение, которое вы хотите отключить. Появится экран свойств с кнопку для принудительного останова в левом верхнем углу и другую для Отключите или удалите обновления в верхней правой части.

  • Удалить данные.

Ответ 13

Вы можете перейти к своему эмулятору > Настройки > Приложение > . затем щелкните приложение, из которого вы хотите удалить базу данных, и нажмите > Очистить данные.,