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

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

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

Ответ 1

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

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

  • Вы можете использовать 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"

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

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

    adb pull /sdcard/filename.sqlite

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

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

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

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

Ответ 2

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

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

В build.gradle:

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

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

Stetho.initializeWithDefaults(this);

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

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

Ответ 3

Лучший способ, который я нашел на данный момент, - использовать инструмент 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();

enter image description here

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

ШАГ 3

Вот оно!


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

Ответ 4

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

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

При завершении разработки удалите файл Java из папки src. Что это.

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

Ответ 5

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

  • adb shell
  • cd /go/to/databases
  • sqlite3 database.db
  • В командной строке sqlite> введите .tables. Это даст вам все таблицы в файле database.db.
  • select * from table1;

Ответ 6

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

Ответ 7

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

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

AndroidDBvieweR

Ответ 8

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

  • ADB
  • сторонняя библиотека или
  • 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-карте


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

Ответ 9

Я использую SQLite Database Browser, чтобы увидеть содержимое SQLite DB в Android-разработке. Сначала вы должны вывести файл базы данных с устройства, а затем открыть его в SQLite DB Browser.

Ответ 10

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

https://github.com/Pixplicity/dbdump

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

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

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

Ответ 11

Выполните следующие действия.

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-Extension:

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

-Unzip и поместите его в eclipse/dropins (не плагины).

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

Ответ 12

попробуйте facebook Stetho.

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

https://github.com/facebook/stetho

Ответ 13

шаг 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);

Ответ 14

Это работает с 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, например.

Ответ 15

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

Ответ 16

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

Использование терминала Сначала укажите местоположение, в котором sdk andriod запущен

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

Ответ 17

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

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

Ответ 18

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

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

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

Ответ 19

Я нашел очень простой библиотечный stetho для просмотра sqlite db приложения в chrome, см.

Ответ 20

Первое сообщение (fooobar.com/info/61047/...) для меня не работает.

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

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

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

Я рекомендую вам установить имя файла DB как *.sqlite и открыть его с помощью Firefox addon: 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 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;