Просмотр содержимого файла базы данных в Android Studio

Я использую Android Studio для разработки моего приложения с момента его выпуска.

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

Чтобы сделать это, я должен открыть DDMS > File Explorer. Когда я открываю DDMS, я должен повторно подключить USB, и я потеряю поток отладки. После проверки файла базы данных мне нужно закрыть DDMS и снова подключить USB, чтобы вернуться в режим отладки.

Это слишком сложно. У кого-нибудь есть лучший способ сделать это в Android Studio (я знаю, что это проще в Eclipse)?

Ответ 1

Наконец, я нашел простейшее решение, которому не нужно открывать DDMS.

На самом деле решение основано на том, что упоминалось в @Distwo, но это не должно быть так сложно.

Сначала, запомните путь к файлу базы данных в устройстве, он должен быть таким же.  Например, мой: /data/data/com.XXX.module/databases/com.XXX.module.database

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

 adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/

Что вам нужно сделать, это просто скопировать и сохранить эту команду, затем вы можете использовать ее снова и снова.

Третий, если у вас есть Permission Denied или что-то в этом роде, просто запустите adb root перед предыдущей командой.

Ответ 2

Просмотр баз из Android Studio:

Изменить: Чтобы просмотреть базу данных на эмуляторе, выполните следующие действия (для реального устройства, прокрутите вниз):

  1. Загрузите и установите SQLiteBrowser.
  2. Скопируйте базу данных с устройства на компьютер:

    • Версии Android Studio <3.0:

      • Откройте DDMS через Tools > Android > Android Device Monitor

      • Нажмите на ваше устройство слева.
        Вы должны увидеть ваше выражение: enter image description here

      • Перейдите в проводник (одна из вкладок справа), перейдите в /data/data/databases enter image description here

      • Выберите базу данных, просто нажав на нее.

      • Перейдите в верхний правый угол окна Android Device Monitor. Нажмите на кнопку "извлечь файл с устройства": enter image description here

      • Откроется окно с вопросом, где вы хотите сохранить файл базы данных. Сохраните его где угодно на своем ПК.

    • Версии Android Studio> = 3.0:

      • Откройте Обозреватель файлов устройств через View > Tool Windows > Device File Explorer

      • Перейдите в data > data > PACKAGE_NAME > database, где PACKAGE_NAME - имя вашего пакета (в приведенном выше примере это com.Movie)

      • Щелкните правой кнопкой мыши базу данных и выберите Save As... Сохраните его где угодно на своем ПК.

  3. Теперь откройте установленный вами SQLiteBrowser. Нажмите "открыть базу данных", перейдите к месту, в котором вы сохранили файл базы данных, и откройте. Теперь вы можете просматривать содержимое вашей базы данных.


Для просмотра вашей базы данных на вашем мобильном устройстве:

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

enter image description here

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

Ответ 3

Подключиться к Sqlite3 через оболочку ADB

Я не нашел никакого способа сделать это в Android Studio, но я получаю доступ к db с удаленной оболочкой, а не потянув за файл каждый раз.

Найти всю информацию здесь: http://developer.android.com/tools/help/adb.html#sqlite

1- Перейдите в свою папку с инструментальными средствами в командной строке

2- Введите команду adb devices, чтобы получить список ваших устройств

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device

3. Подключите оболочку к вашему устройству:

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell

4 Перейдите к папке, содержащей ваш файл db:

cd data/data/<your-package-name>/databases/

5 запустите sqlite3 для подключения к вашему db:

sqlite3 <your-db-name>.db

6-запустить команды sqlite3, которые вам нравятся, например:

Select * from table1 where ...;

Примечание. Найдите больше команд для запуска ниже.

Шифрование SQLite

Есть несколько шагов, чтобы увидеть таблицы в базе данных SQLite:

  • Список таблиц в вашей базе данных:

    .tables
    
  • Перечислите, как выглядит таблица:

    .schema tablename
    
  • Распечатайте всю таблицу:

    SELECT * FROM tablename;
    
  • Перечислите все доступные команды командной строки SQLite:

    .help
    

Ответ 4

Я на самом деле очень удивлен, что никто не дал такое решение:

Посмотрите на Стето.

Я использовал Stetho несколько раз для разных целей (один из них - проверка базы данных). На настоящем веб-сайте они также рассказывают о возможностях проверки сети и просмотра иерархии представлений.

Для этого требуется лишь небольшая настройка: 1 добавление зависимостей gradle (которое можно закомментировать для производственных сборок), несколько строк кода для создания экземпляра Stetho и браузер Chrome (потому что он использует Chrome devtools для всего).

Обновление: Теперь вы можете использовать Stetho для просмотра файлов Realm (если вы используете Realm вместо базы данных SQLite): https://github.com/uPhyca/stetho-realm

Обновление № 2: Теперь вы можете использовать Stetho для просмотра документов Couchbase: https://github.com/RobotPajamas/Stetho-Couchbase

Обновление № 3: Facebook сосредотачивает усилия на добавлении всех функций Stetho в свой новый инструмент, Flipper. У Flipper уже есть много функций, которые есть у Stetho. Итак, сейчас самое время сделать переключатель. https://fbflipper.com/docs/stetho.html

Ответ 5

Самый простой способ, когда не используется эмулятор

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name

Предостережения:

Я не проверял это некоторое время. Это может не работать на API> = 25. Если команда cp не работает, попробуйте выполнить одно из следующих действий:

# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>

# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name

Объяснение:

Первый блок настраивает права доступа вашей базы данных для чтения. Это использует run-as который позволяет олицетворять пользователя пакета для внесения изменений.

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the shell started with run-as

Затем мы копируем базу данных в мировой читаемый/записываемый каталог. Это позволяет пользователю adb pull доступ.

$ cp /data/data/your.package.name/databases/database_name /sdcard

Затем замените существующие права на чтение/запись. Это важно для безопасности вашего приложения, однако привилегии будут заменены при следующей установке.

$ run-as your.package.name
$ chmod 660 databases/database_name 
$ chmod 660 databases
$ exit # Exit the shell started with run-as

Наконец, скопируйте базу данных на локальный диск.

$ exit # Exits shell on the mobile device (from adb shell) 
$ adb pull /sdcard/database_name

Ответ 6

В Android Studio 3 и выше Вы можете увидеть раздел "Обозреватель файлов устройств" в правой нижней части Android Studio.

Откройте его, затем вы увидите дерево файлов, вы можете найти базы данных приложения по этому пути:

/data/data/{package_name}/databases/

enter image description here

Ответ 7

Попробуйте этот плагин для Android Studio SQLScout. Вы можете просматривать и редактировать базу данных своего приложения в режиме реального времени.

SQLScout

Редактировать: Помните, что это платный плагин, но есть 24-часовая пробная версия и подходит для головной боли.

Ответ 8

После прохождения всех решений я предложу

Используйте Stethos
Давайте посмотрим, как это просто

Добавьте следующие зависимости в файл build.gradle

compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'

Затем перейдите к методу mainActivity onCreate и добавьте следующую строку

Stetho.initializeWithDefaults(this);

это потребует от вас

import com.facebook.stetho.Stetho;

Теперь при запуске приложения из Android Studio, Open Chrome и в адресной строке типа
хром://инспектировать/

на вкладке ресурсов> веб-SQL проверьте базу данных и играть в нее в режиме реального времени легко

Ответ 9

Чтобы узнать, где хранится база данных sqlite, созданная вами в студии android, вам нужно выполнить простые шаги:

1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your  database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.

Для получения дополнительной информации эта ссылка будет полезна. http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/

Чтобы просмотреть ваши данные в db файле, вам необходимо загрузить браузер SQL или добавить его в любом браузере, чтобы открыть файл в браузере и просмотреть свои данные.

Загрузите браузер из http://sqlitebrowser.org/

Вот скриншот, показывающий браузер, содержащий базу данных регистров

Спасибо,

Ответ 10

Самый простой способ - подключить свое устройство и запустить Android Studio Then From Tool Bar:

  1. Вид → Окно инструментов → Обозреватель файлов устройств
  2. Зайдите в данные/данные и найдите ваш пакет
  3. найдите файл БД, который вы хотите изучить, и загрузите его
  4. Я рекомендую этот онлайн-инструмент: https://sqliteonline.com/, чтобы изучить файл БД.

Другой способ - использовать библиотеку Stetho:

  1. Добавьте зависимость Stello в ваш build.gradle:

    скомпилируйте 'com.facebook.stetho: stetho: 1.5.0'

  2. Поместите следующую строку в onCreate() вашего класса Application или основного Activity:

    Stetho.initializeWithDefaults (это);

  3. Подключите ваше устройство, запустите приложение и зайдите на следующий сайт в Chrome:

    хром://Проверка/# устройств

и это все. Теперь вы можете исследовать свои таблицы.

Примечание: рекомендуется удалить зависимость перед переходом к производству.

Ответ 11

Если вы хотите просматривать свои базы данных из ANDROID STUDIO, вот что я использую:

Перейдите в Файлы/Настройки/Плагины и найдите это:

enter image description here

... После перезапуска Android Studio вы можете выбрать загруженный файл базы данных следующим образом: enter image description here

... Щелкните значок "Открыть консоль SQL", и вы получите прекрасный вид вашей базы данных в Android Studio: ![enter image description here

Ответ 12

Откройте терминал просмотра файлов устройства в нижней части Android Studio.

Откройте папку с именем Data, затем внутри Data снова откройте папку данных.

Open the folder data

Прокрутите вниз список папок и найдите папку с вашим .package.name. Откройте папку your.package.name > База данных. Вы получаете your.databaseName. Щелкните правой кнопкой мыши свое имя .database и сохраните как в C: /your/Computer/Directory.

Перейдите в C: /your/Computer/Directory откройте your.databaseName с БД SQLite

enter image description here

Ответ 13

Для Android Studio 3.X

  1. Вид → Инструменты Windows → Обозреватель файлов устройств
  2. В проводнике файлов data-> data-> com. (Пакет yourapplication) → базы данных
  3. Щелкните правой кнопкой мыши на базе данных и сохраните на локальном компьютере. Чтобы открыть файл, вы можете использовать SQLite Studio, просто перетащив на него файл базы данных.

Вот ссылка на SQLite Studio: https://sqlitestudio.pl/index.rvt?act=download

Ответ 14

Это ОЧЕНЬ старый вопрос, и мой ответ похож на некоторые ответы выше, но сделано МНОГО быстрее. script ниже для Mac, но я уверен, что кто-то может изменить его для Windows.

1) Откройте редактор script на вашем Mac (вы можете просто искать редактор script в центре внимания)

2) Скопируйте и вставьте текст ниже и измените его с помощью пути к SDK, имени пакета и т.д. (См. Ниже)
3) Сохраните script!!

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

замените в script следующие вещи ниже:

path_to_my_sdk == → введите полный путь к вашему sdk
my_package_name == → имя пакета вашего приложения
myDbName.db == → имя файла вашей базы данных

set getLocalDb to "path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db"
do shell script getLocalDb

Надеюсь, это поможет кому-то.

Ответ 15

Я использую Windows 7, мое устройство является эмулированным API-интерфейсом Android 23. Я полагаю, что это то же самое для любого реального устройства, если оно внедрено, а API не выше 23

Перейдите в Инструменты → Android → Android Device Monitor. Перейдите в Проводник. В моем случае это данные/данные//app_webview/databases/file_0/1

Мне нужно вручную добавить .db в конец файла с именем "1"

Ответ 16

Я знаю, что вопрос довольно старый, но я считаю, что этот вопрос все еще присутствует.

Просмотр баз данных из вашего браузера

Я создал инструмент для разработки, который вы можете интегрировать как lib в свой проект приложения Android. Инструмент открывает сокет сервера в вашем приложении для связи через веб-браузер. Вы можете просматривать всю вашу базу данных и загружать файл базы данных непосредственно через браузер.

введите описание изображения здесь

Интеграция может выполняться через jitpack.io:

project build.gradle:

//...
allprojects {
    repositories {
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}
//...

app build.gradle:

//...
dependencies {
    //...
    debugCompile 'com.github.sanidgmbh:debugghost:v1.1'
    //...
}
//...

Настройка класса приложения

Чтобы скомпилировать DebugGhostLib только в некоторых типах сборки или продуктах, нам нужен абстрактный класс приложения, который будет получен в специальных вариантах. Поместите следующий класс в свою папку main (под java > your.app.package):

public class AbstractDebugGhostExampleApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Do your general application stuff
    }
}

Теперь, для вашего типа сборки выпуска (или вкуса продукта), вы добавляете следующий класс приложения в свою папку release (или продукт-аромат) (также под java > your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

Это класс приложения, который будет не ссылаться на DebugGhostLib.

Также сообщите своему AndroidManifest.xml, что вы используете свой собственный класс приложения. Это будет сделано в папке main:

<manifest package="demo.app.android.sanid.com.debugghostexample" xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- permissions go here -->
    <application android:name=".MyApp"> <!-- register your own application class -->
        <!-- your activities go here -->
    </application>
</manifest>

Теперь, для вашего типа сборки отладки (или вкуса продукта), вы добавляете следующий класс Application в свою папку debug (или продукт-аромат) (также под java > your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    private DebugGhostBridge mDebugGhostBridge;

    @Override
    public void onCreate() {
        super.onCreate();

        mDebugGhostBridge = new DebugGhostBridge(this, MyDatabaseHelper.DATABASE_NAME, MyDatabaseHelper.DATABASE_VERSION);
        mDebugGhostBridge.startDebugGhost();
    }
}

Здесь вы можете найти инструмент .

Ответ 17

Мне пришлось вытащить базу данных с телефона на ПК. Теперь я использую это очень хорошо сделанное и бесплатное приложение, которое имеет много функций. Он работает на API 4.1+ с корневым устройством.
Дайте мне знать, если вы найдете способ заставить его работать без рута.

Screenshot SqlitePrime

https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime

Ответ 18

Это комбинация из других ответов с плюсом

  1. Установить браузер БД для SQLite
  2. Получите точное местоположение в File File Explorer для MyBase.db, например, "/data/data/com.whwhat.myapp/databases/MyBase.db"
  3. Установите окно проекта с Android на Project - чтобы вы могли видеть файлы (build.gradle, gradle.properties,... и т.д.)
  4. В окне проекта щелкните правой кнопкой мыши и выберите "Открыть в терминале".
  5. В терминале вы теперь находитесь в корневом каталоге вашего приложения с жесткого диска, поэтому выполните: adb pull/data/data/com.whwhat.myapp/databases/MyBase.db
  6. Теперь в окне Project вашей Android Studio у вас есть файл "MyBase.db"
  7. Дважды щелкните файл базы данных в Project, и теперь вы можете просматривать/редактировать базы данных в браузере БД.
  8. Когда вы будете готовы, просто запишите изменения в браузере БД, чтобы базы данных сохранялись на жестком диске.
  9. В терминале с помощью команды: adb нажмите MyBase.db/data/data/com.whwhat.myapp/databases/MyBase.db, который вы просто отправляете с жесткого диска на устройство отредактированной базы данных.

Ответ 19

Это может быть не тот ответ, который вы ищете, но у меня нет лучшего способа загрузки DB с телефона. Я предлагаю вам убедиться, что вы используете этот мини-DDMS. Это будет супер скрыто, хотя если вы не нажмете очень маленькую коробку camoflage в самом нижнем левом углу программы. (попытался нависнуть над ним, иначе вы могли бы пропустить это.)

Также выпадающее меню, которое не содержит фильтров (вверху справа). В буквальном смысле это тонна различных способов отслеживания различных процессов/приложений по PPID, имени и многим другим. Я всегда использовал это, чтобы контролировать телефон, но имейте в виду, что я не делаю работу с dev, которая должна быть на 120% положительной, база данных не делает что-то необычное.

Надеюсь, что это поможет

enter image description here

Ответ 20

Я собрал команду командной строки unix для этого процесса и разместил здесь код:

https://github.com/elliptic1/Android-Sqlite3-Monitor

Это оболочка script, которая принимает имя пакета и имя базы данных в качестве параметров, загружает файл базы данных с подключенного Android-устройства и запускает пользовательский script против загруженного файла. Затем с помощью инструмента unix, такого как "watch", вы можете открыть окно терминала с периодически обновляемым представлением вывода вашей базы данных script.

Ответ 21

Простой и удобный способ просмотра базы данных контента в Android studio.

Сначала установите плагин Database Navigator в Android Studio

enter image description here

Второй, перезагрузите Android Studio

В-третьих, сохраните базу данных в папку по умолчанию, например: (C:\Users\User  Имя \Documents\AndroidStudio\DeviceExplorer\emulator или device\data\data\имя пакета\базы данных)

enter image description here

В-четвертых, подключите сохраненный файл dbname_db в Навигатор баз данных

enter image description here enter image description here

Укажите тот же путь к файлу БД, который используется на шаге Третий

i.e (C:\Users\Имя пользователя \Documents\AndroidStudio\DeviceExplorer\emulator или device\data\data\имя пакета \database\package naem\dbname_db)

Наконец,, просто проверьте соединение с БД, откройте консоль и делайте все, что хотите.

enter image description here

Если вы хотите обновить БД, просто повторите шаг Второй и просто сохраните его или обновите.

СЧАСТЛИВЫЕ КОДИРОВАНИЕ !!!!!