просматривать данные в базе данных Android SQLite

39

Есть ли способ для пользователя Android просматривать базы данных SQLite на своем телефоне и просматривать данные в базах данных?

Я часто использую бета-версию SoftTrace. Это здорово, но я не могу найти, чтобы загрузить данные, которые он отслеживает на ПК.

Теги:
database

8 ответов

27
Лучший ответ

База данных для конкретного приложения живет в /data/data/[packagename]/databases

Пакетное имя - это пакет, который вы определяете в своем манифесте, например /data/data/org.vimtips.supacount/databases/counts.db.

Вы можете просмотреть его с помощью adb shell и введите sqlite3 /data/data/org.vimtips.supacount/databases/counts.db

Или вы можете вытащить его из устройства, чтобы посмотреть на него с помощью сторонней утилиты, с командой вроде adb pull /data/data/org.vimtips.supacount/databases/counts.db ..

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

  • 23
    Методы, описанные здесь, будут работать на эмуляторе и рутованном телефоне, но не будут работать на производственных телефонах.
  • 1
    @CommonsWare Есть ли способ заглянуть в базу данных нашего приложения на рабочем телефоне?
Показать ещё 5 комментариев
18

Если вы используете Eclipse, вы можете использовать плагин под названием "Questoid SQLite Browser" для просмотра базы данных SQL Lite на вашем эмуляторе Android:

  • Установите плагин
  • Перезапустить eclipse
  • Запустите свой эмулятор.
  • Переключиться на DDMS
  • Откройте базу данных с плагином (в качестве @synic, упомянутого ранее, база данных находится здесь, например, /data/data/my _project/databases).

Вот более подробный учебник: http://www.tylerfrankenstein.com/browse-android-emulator-sqlite-database-eclipse

  • 1
    +1 .. превосходит необходимость извлекать БД из устройства / эмулятора и загружать ее в сторонний sqlite-браузер (или даже хуже, используя оболочку adb)
  • 1
    спасибо @tyler это действительно помогло.
Показать ещё 2 комментария
7

Вот метод free, который работал у меня на телефоне, который is not rooted. Кредит идет этот ответ SO.

  • Используйте adb backup -f backup.ab -noapk app.package.name
  • В Windows загрузите jar Android Backup Extractor, найденный на SourceForge здесь, затем запустите java -jar abe.jar unpack backup.ab extractedbackup.tar. В Linux вы можете следовать инструкциям dd из ответа, который я дал в начале.
  • Загрузите SQLite Database Browser из SourceForge здесь, затем откройте файл db, содержащийся в extractedbackup.tar.

Лично, чтобы облегчить этот процесс, я сначала добавил adb в свою среду PATH. Затем я создал резервную папку, в которой храню все файлы, упомянутые выше. Это мешает мне работать с cd (сменить каталог) повсюду.

  • 1
    Это должен быть принятый ответ: он работает на серийных телефонах по состоянию на 12.06.15 :) Спасибо.
5

Плагин Questoid, по-видимому, стоит $9 и требует регистрации. Еще одна альтернатива в Windows - загрузить открытый SQLLite-браузер с открытым исходным кодом (ссылка ниже), а затем вытащить базу данных с телефона. В Eclipse вы можете сделать это из браузера файлов, перейдя в каталог /data/data/ [packagename]/databases на телефоне или эмуляторе и нажав "Вытащить файл с устройства" в верхнем правом углу. Сохраните базу данных локально, затем откройте браузер SQLite.

http://sourceforge.net/projects/sqlitedbrowser/

  • 0
    Сайт Questoid, кажется, теперь перенаправляет на CellObject. Их инструменты, кажется, ничего не стоят (хотя вы можете пожертвовать), и у них есть ссылка на их код, размещенный в Google Code. Я только что установил SQLite Browser, и он работает хорошо для меня без необходимости сначала извлекать файл базы данных на мою рабочую станцию.
4

На самом деле наиболее доступный (но все же хакерский) способ получения "живых" результатов из базы данных при разработке на эмуляторе, который я нашел, таков:

  • Создайте script, чтобы вытащить базу данных из эмулятора, что-то вроде этого

    #!/bin/bash
    
    ANDROID_HOME=/path/to/sdk
    ADB=$ANDROID_HOME/platform-tools/adb
    REMOTE_DB_PATH=/data/data/com.yourpackage.name/databases/your_db
    LOCAL_DB_PATH=.
    
    while true; do
    
      echo copying DB...
      `$ADB pull $REMOTE_DB_PATH $LOCAL_DB_PATH`
      sleep 3
    
    done
    

    Запустите его.

  • Установите Плагин SQLite Manager для Firefox

  • Откройте локальную копию базы данных (которая постоянно переопределяется запуском script с шага 1)

  • Введите свой SQL:

    Изображение 1151

  • Выберите File->Reconnect

  • Нажмите Run SQL

Основной трюк заключается в том, что при повторном подключении не выполняется reset SQL, введенное на шаге 4 (как это происходит, например, в SQLite Browser), поэтому вы можете повторить шаги 5,6, чтобы увидеть "живые" результаты из вашей базы данных Android.

Обратите внимание, что это работает только для эмулятора, оно не будет работать для реального устройства (даже корневого).

3

Вы можете просмотреть свою базу данных из своего приложения, используя эту библиотеку. https://github.com/sanathp/DatabaseManager_For_Android

С помощью этой библиотеки вы можете управлять своей базой данных SQLite приложения непосредственно из своего приложения. вы можете просматривать таблицы в базе данных приложений, обновлять, удалять, вставлять строки в свои таблицы.

Его единственный файл активности java, просто добавьте java файл в исходную папку. После завершения разработки удалите java файл из вашей папки src.

Это очень помогло мне. Надеюсь, это тоже поможет.

Вы можете посмотреть 1-минутную демонстрацию здесь: http://youtu.be/P5vpaGoBlBY

3

Если вам посчастливилось получить IntelliJ Ultimate, вы можете подключить устройство, откройте вкладку "База данных" справа, нажмите +, выберите SQLite. Остальное тривиально.

Одна вещь, о которой следует помнить, заключается в том, что вам нужно продолжать нажимать кнопку "Синхронизировать" в базе данных (или в выбранной таблице), чтобы увидеть изменения, сделанные извне, что очень раздражает.

  • 0
    @ Денис - это хорошо знать, разве IntelliJ Community не предоставляет эту функцию?
  • 2
    @JustinC Увы, инструменты баз данных доступны только в Ultimate: jetbrains.com/idea/features/editions_comparison_matrix.html
1

См. этот ответ. Вы можете использовать библиотеку Stetho из Facebook, а затем просто просматривать свою базу данных из Chrome:)

Ещё вопросы

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