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

121

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

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

Теги:

8 ответов

359

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

context.deleteDatabase(DATABASE_NAME);

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

  • 14
    Убедитесь, что вы закрыли все подключения базы данных перед удалением. В противном случае вам придется перезапустить приложение.
15

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

adb shell
cd /data/data
cd <your.application.java.package>
cd databases
su rm <your db name>.db
  • 0
    Я получаю сообщение «rm fail for mydatabase.db, Permission denied». Должен ли у вас быть рутированный телефон, чтобы это работало? Или есть способ указать разрешение? Или это работает только на эмуляторе?
  • 2
    @PeteH В эмуляторе вам не нужно разрешение, но для реального устройства вам понадобится рут
Показать ещё 4 комментария
8

Try:

this.deleteDatabase(path); 

или

context.deleteDatabase(path);
7

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

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

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

Спасибо.

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

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

5

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

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

  • 1
    Работает ли это с реальным устройством телефона? Я не мог видеть никаких подпапок в папке данных при просмотре в режиме DDMS.
  • 1
    Но этот вопрос касается удаления базы данных программно?
3

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

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

-1

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

-1

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

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

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

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

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

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

  • 7
    ОП сказал программно . Переход к настройкам и нажатие кнопки не программно.
  • 0
    @ Ммм, я знал об этом. Просто это самый простой способ удалить базу данных, а не таблицы и контент. Он сказал, что ему нужно, чтобы проверить создание базы данных, и это делает это. Я искал то же самое и согласился на это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню