Как просмотреть базу данных SQLite на устройстве Android?

У меня есть набор данных в базе данных SQLite. Мне нужно просмотреть базу данных на устройстве. Как я могу это сделать?

Я проверил в режиме ддмс. Данные в проводнике файлов пусты.

20 ответов

Вот пошаговые инструкции (в основном взяты из комбинации других ответов). Это работает даже на устройствах, которые не рутированы.

  1. Подключите ваше устройство и запустите приложение в режиме отладки.

  2. Вы можете использовать adb -d shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/" чтобы увидеть, что такое имя файла базы данных.

Обратите внимание: com.yourpackge.name имя вашего пакета приложений Вы можете получить его из файла манифеста.

  1. Скопируйте файл базы данных из папки приложения на SD-карту.

    adb -d shell "run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite > /sdcard/filename.sqlite"

Обратите внимание: filename.sqlite - это имя вашей базы данных, которое вы использовали при создании базы данных.

  1. Извлеките файлы базы данных на свой компьютер:

    adb pull /sdcard/filename.sqlite

Это скопирует базу данных с SD-карты в место, где существует ваш АБР.

  1. Установите Firefox SQLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

  2. Откройте Firefox SQLite Manager (Инструменты->SQLite Manager) и откройте файл базы данных, начиная с шага 3 выше.

  3. Наслаждайтесь!

Взятые отсюда, вы можете попробовать:

  1. Библиотека Stetho с открытым исходным кодом Facebook

В build.gradle:

dependencies {
  // Stetho core
  compile 'com.facebook.stetho:stetho:1.5.0'        
  //If you want to add a network helper
  compile 'com.facebook.stetho:stetho-okhttp:1.5.0'
}

Инициализируйте библиотеку в объекте приложения:

Stetho.initializeWithDefaults(this);

И вы можете просмотреть свою базу данных в Chrome из chrome://inspect

  1. Другим вариантом является этот плагин (не бесплатно)
  2. И последняя - это бесплатная библиотека с открытым исходным кодом для просмотра содержимого БД в браузере https://github.com/amitshekhariitbhu/Android-Debug-Database

Лучший способ, который я нашел до сих пор, - использовать инструмент Android-Debug-Database.

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

ШАГ 1

Добавьте следующую зависимость в файл Gradle вашего приложения и запустите приложение.

debugCompile 'com.amitshekhar.android:debug-db:1.0.0'

ШАГ 2

Откройте браузер и перейдите на IP-адрес вашего телефона через порт 8080. URL должен выглядеть следующим образом: http://YOUR_PHONE_IP_ADDRESS:8080, Вам будет представлено следующее:

ПРИМЕЧАНИЕ. Вы также всегда можете получить URL-адрес отладочного адреса из своего кода, вызвав метод DebugDB.getAddressLog();

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

Чтобы получить IP-адрес моего телефона, я в настоящее время использую Ping Tools, но есть много альтернатив.

ШАГ 3

Это оно!


Более подробная информация в официальной документации: https://github.com/amitshekhariitbhu/Android-Debug-Database

Лучший способ просматривать и управлять базой данных вашего приложения для Android - использовать библиотеку https://github.com/sanathp/DatabaseManager_For_Android.

Это один файл активности Java; просто добавьте его в исходную папку. Вы можете просматривать таблицы в базе данных вашего приложения, обновлять, удалять, вставлять строки в вашу таблицу. Все внутри вашего приложения.

Когда разработка закончится, удалите файл Java из папки src. Вот и все.

Вы можете просмотреть 5-минутную демонстрацию, менеджер баз данных для базы данных SQLite для Android.

Вы можете сделать это:

  1. adb shell
  2. cd /go/to/databases
  3. sqlite3 database.db
  4. в sqlite> подскажите, наберите .tables, Это даст вам все таблицы в файле database.db.
  5. select * from table1;

Если вы используете реальное устройство, и оно не является рутированным, то невозможно увидеть вашу базу данных в FileExplorerпотому что по какой-то причине безопасности эта папка заблокирована в системе Android. И если вы используете его в эмуляторе, вы найдете его в FileExplorer, / data / data / имя вашего пакета / database / yourdatabse.db.

Попробуйте AndroidDBvieweR!

  • Нет необходимости для вашего устройства быть ROOTED
  • Нет необходимости импортировать файл базы данных приложения
  • Несколько конфигураций, и вы готовы к работе!

AndroidDBvieweR

Если вы не хотите использовать

  1. ADB
  2. Сторонняя библиотека или
  3. Gradle зависимость и т. д.

и просто хотите файл базы данных на вашей SDCard, это решение.

скопируйте класс DatabaseUtil.java в свой проект

package com.util;

import android.content.Context;
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;

/**
 * Shayan Rais (http://shanraisshan.com)
 * created on 8/17/2016
 */
public class DatabaseUtil {
    //You need to declare permission
    // <uses-permission     android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //in your Manifest file in order to use this class

    //______________________________________________________________________________________________

    //todo -> rename the database according to your application
    final static String DATABASE_NAME = "MyDatabase.sqlite";
    //example WhatsApp :  /data/data/com.whatsapp/databases/msgstore.db
    final static String FOLDER_EXTERNAL_DIRECTORY = Environment.getExternalStorageDirectory() + "/shanraisshan";

    //______________________________________________________________________________________________
    public static void copyDatabaseToExtStg(Context ctx) {
        //external storage file
        File externalDirectory = new File(FOLDER_EXTERNAL_DIRECTORY);
        if(!externalDirectory.exists())

        .
        .

и просто вызовите метод copyDatabaseToExtStg() из любого действия в вашем приложении


это скопирует папку базы данных в папку sdcard/shanraisshan/your_database_file

Изображение показывает MyDatabase.sqlite присутствует в SD-карте


Для более подробного объяснения проверьте https://github.com/shanraisshan/Android-Database-Viewer на Github. https://github.com/shanraisshan/Android-Database-Viewer

Я использовал браузер баз данных SQLite для просмотра содержимого БД SQLite в разработке Android. Сначала вы должны извлечь файл базы данных с устройства, а затем открыть его в браузере БД SQLite.

Хотя это не позволяет просматривать базу данных на вашем устройстве напрямую, я опубликовал простой сценарий оболочки для выгрузки баз данных на локальный компьютер:

https://github.com/Pixplicity/dbdump

Он выполняет два различных метода, описанных здесь:

  1. Сначала он пытается сделать файл доступным для других пользователей и пытается извлечь его из устройства.
  2. Если это не удается, он передает содержимое файла через терминал на локальный компьютер. Выполняет дополнительный трюк для удаления \r символы, которые некоторые устройства выводят в оболочку.

Отсюда вы можете использовать различные CLI или GUI приложения SQLite, такие как sqlite3 или же sqlitebrowser, для просмотра содержимого базы данных.

Следуй этим шагам

1> Загрузите файл *.jar отсюда.

2> Поместите файл *.jar в папку eclipse/dropins/ и перезапустите eclipse.

3> В правом верхнем углу затмения щелкните значок DDMS.

4> Выберите правильный эмулятор на левой панели.

5 На вкладке "Проводник" на главной панели перейдите в /data/data/[YOUR.APP.NAMESPACE]/databases.

6> Под значком DDMS должен появиться новый синий значок базы данных, когда вы выбираете базу данных. Нажмите на нее, и вы увидите вкладку Questoid Sqlite Manager, которая откроет ваши данные.

* Примечание. Если база данных не загорается, это может быть связано с тем, что ваша база данных не имеет расширения *.db. Убедитесь, что ваша база данных называется [DATABASE_NAME].db

* Примечание: если вы хотите использовать БД без расширения.db:

-Загрузите этот Questoid SqLiteBrowser: Загрузите сюда.

- Распакуйте и поместите его в Eclipse / Dropins (не Plugins).

-Проверьте это для получения дополнительной информации Нажмите здесь.

Шаг 1 Скопируйте этот класс в ваш пакет

шаг 2 поместите следующий код в ваш класс, который расширяет SQLiteOpenHelper.

 //-----------------for show databasae table----------------------------------------

public ArrayList<Cursor> getData(String Query)
{
    //get writable database
    SQLiteDatabase sqlDB =this.getWritableDatabase();
    String[] columns = new String[] { "mesage" };
    //an array list of cursor to save two cursors one has results from the query
    //other cursor stores error message if any errors are triggered
    ArrayList<Cursor> alc = new ArrayList<Cursor>(2);
    MatrixCursor Cursor2= new MatrixCursor(columns);
    alc.add(null);
    alc.add (null);


    try{
        String maxQuery = Query ;
        //execute the query results will be save in Cursor c
        Cursor c = sqlDB.rawQuery(maxQuery, null);

        //add value to cursor2
        Cursor2.addRow(new Object[] { "Success" });

        alc.set(1,Cursor2);
        if (null != c && c.getCount() > 0)
        {
            alc.set(0,c);
            c.moveToFirst();
            return alc ;
        }
        return alc;
    }
    catch(SQLException sqlEx)
    {
        Log.d("printing exception", sqlEx.getMessage());
        //if any exceptions are triggered save the error message to cursor an return the arraylist
        Cursor2.addRow(new Object[] { ""+sqlEx.getMessage() });
        alc.set(1,Cursor2);
        return alc;
    }
    catch(Exception ex)
    {
        Log.d("printing exception",ex.getMessage());
        //if any exceptions are triggered save the error message to cursor an return the arraylist
        Cursor2.addRow(new Object[] { ""+ex.getMessage() });
        alc.set(1,Cursor2);
        return alc;
    }
}

шаг 3 зарегистрироваться в манифесте

<activity
        android:name=".database.AndroidDatabaseManager"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"/>

шаг 4

Intent i = new Intent(this, AndroidDatabaseManager.class);
startActivity(i);

Попробуй фейсбук стето.

Stetho - это отладочный мост для приложений Android, включающий мощные инструменты разработчика Chrome и многое другое.

https://github.com/facebook/stetho

Вы можете попробовать SQLiteOnWeb. Он управляет вашей базой данных SQLite в браузере.

Это работает с Android 6.0 (по крайней мере, отлаживаемые приложения):

adb shell "run-as your.package.name cp /data/data/your.package.name/databases/you-db-name  /sdcard/file_to_write"

Затем вы можете просто просмотреть базу данных с помощью aSQLiteManager, например.

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

Использование терминала Сначала укажите ваше местоположение, где находится andriod sdk

eg: C:\Users\AppData\Local\Android\sdk\platform-tools>

затем проверьте список устройств, подключенных с помощью

 adb devices

и затем запустите эту команду, чтобы скопировать файл с устройства в вашу систему

adb -s YOUR_DEVICE_ID shell run-as YOUR_PACKAGE_NAME chmod -R 777 /data/data/YOUR_PACKAGE_NAME/databases && adb -s YOUR_DEVICE_ID shell "mkdir -p /sdcard/tempDB" && adb -s YOUR_DEVICE_ID shell "cp -r /data/data/YOUR_PACKAGE_NAME/databases/ /sdcard/tempDB/." && adb -s YOUR_DEVICE_ID pull sdcard/tempDB/ && adb -s YOUR_DEVICE_ID shell "rm -r /sdcard/tempDB/*"

Вы можете найти файл базы данных по этому пути

 Android\sdk\platform-tools\tempDB\databases

Существует Android-браузер TKlerx для Eclipse, и он полностью функционален вместе с Android Studio. Я рекомендую это, потому что это очень практично.

Чтобы установить его на Device Monitor, просто поместите файл JAR в [Path to Android SDK folder]/sdk/tools/lib/monitor-[...]/plugins,

Используя проводник, вы можете найти файл вашей базы данных следующим образом:

data-->data-->your.package.name-->databases--->yourdbfile.db

Затем вы можете использовать любой SQLite для изучения вашей базы данных. Я использую аддон SQLite Manager Firefox. Это красиво, мало и быстро.

Я нашел очень простую библиотеку stetho для просмотра базы данных sqlite в chrome, см.

Первый пост ( /questions/26058755/kak-prosmotret-bazu-dannyih-sqlite-na-ustrojstve-android/26058769#26058769) не работает для меня.

Я написал собственный скрипт для получения файла БД с устройства. Без рута. Работает нормально.

  1. Скопируйте скрипт в каталог с помощью adb (например:~/android-sdk/platform-tools).
  2. Устройство должно быть подключено к ПК.
  3. использование ./getDB.sh -p <packageName> для получения имени базы данных.

Использование: ./getDB.sh -p <packageName> -n <name of DB> -s <store in mobile device> для получения файла БД в эту (где выполняется скрипт) директорию.

Я рекомендую вам установить имя файла БД как *.sqlite и открыть его с помощью дополнения Firefox: SQLite Manager.

(Это долгое время, когда я что-то писал на Bash. Вы можете редактировать этот код.)

#!/bin/sh
# Get DB from Android device.
#

Hoption=false
Poption=false
Noption=false
Soption=false
Parg=""
Narg=""
Sarg=""

#-----------------------FUNCTION--------------------------:
helpFunc(){ #help
echo "Get names of DB's files in your Android app.
Usage: ./getDB -h
       ./getDB -p packageName -n nameOfDB -s storagePath
Options:
   -h                                           Show help.
   -p packageName                               List of databases for package name.
   -p packageName -n nameOfDB -s storagePath    Save DB from device to this directory."
}


#--------------------------MAIN--------------------------:
while getopts 'p:n:s:h' options; do
    case $options in

        p) Poption=true
            Parg=$OPTARG;;

        n) Noption=true
            Narg=$OPTARG;;

        s) Soption=true
            Sarg=$OPTARG;;

        h) Hoption=true;;
    esac
done

#echo "-------------------------------------------------------
#Hoption: $Hoption
#Poption: $Poption
#Noption: $Noption
#Soption: $Soption
#Parg: $Parg
#Narg: $Narg
#Sarg: $Sarg
#-------------------------------------------------------"\\n
#echo $#    #count of params

if [ $Hoption = true ];then
    helpFunc
elif [ $# -eq 2 -a $Poption = true ];then #list
    ./adb -d shell run-as $Parg ls /data/data/$Parg/databases/
    exit 0
elif [ $# -eq 6 -a $Poption = true -a $Noption = true -a $Soption = true ];then #get DB file
    #Change permissions
    ./adb shell run-as $Parg chmod 777 /data/data/$Parg/databases/
    ./adb shell run-as $Parg chmod 777 /data/data/$Parg/databases/$Narg
    #Copy
    ./adb shell cp /data/data/$Parg/databases/$Narg $Sarg
    #Pull file to this machine
    ./adb pull $Sarg/$Narg
    exit 0
else
    echo "Wrong params or arguments. Use -h for help."
    exit 1;
fi

exit 0;
Другие вопросы по тегам