У меня есть набор данных в базе данных SQLite. Мне нужно просмотреть базу данных на устройстве. Как это сделать?
Я проверил режим ddms. Данные в проводнике файлов пусты.
У меня есть набор данных в базе данных SQLite. Мне нужно просмотреть базу данных на устройстве. Как это сделать?
Я проверил режим ddms. Данные в проводнике файлов пусты.
Ниже приведены пошаговые инструкции (в основном, взятые из комбинации других ответов). Это работает даже на устройствах, которые не внедрены.
Подключите устройство и запустите приложение в режиме отладки.
Вы можете использовать adb -d shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/"
для просмотра имени файла базы данных.
Примечание. com.yourpackge.name
- это имя вашего пакета приложений. Вы можете получить его из файла манифеста.
Скопируйте файл базы данных из папки приложения на SD-карту.
adb -d shell "run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite > /sdcard/filename.sqlite"
Примечание: имя_файла .sqlite - это имя вашей базы данных, которое вы использовали при создании базы данных
Вытащите файлы базы данных на ваш компьютер:
adb pull /sdcard/filename.sqlite
Это скопирует базу данных с SD-карты на место, где находится ваш ADB.
Установите Firefox SQLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Откройте Firefox SQLite Manager (Tools- > SQLite Manager) и откройте файл базы данных с шага 3 выше.
Наслаждайтесь!
Взято из здесь, вы можете попробовать:
В 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
Лучший способ, который я нашел на данный момент, - использовать инструмент 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 - использовать библиотеку DatabaseManager_For_Android.
Это один файл активности Java; просто добавьте его в свою исходную папку. Вы можете просматривать таблицы в базе данных приложений, обновлять, удалять, вставлять строки в таблицу. Все изнутри вашего приложения.
При завершении разработки удалите файл Java из папки src. Что это.
Вы можете просмотреть 5-минутное демо, Менеджер баз данных для Android SQLite Database.
Вы можете сделать это:
adb shell
cd /go/to/databases
sqlite3 database.db
sqlite>
введите .tables
. Это даст вам все таблицы в файле database.db.select * from table1;
Если вы используете реальное устройство и оно не внедрено, тогда вы не можете увидеть свою базу данных в FileExplorer
, потому что из-за некоторой причины безопасности эта папка заблокирована в системе Android. И если вы используете его в эмуляторе, вы найдете его в FileExplorer
, /data/data/вашем имени пакета/databases/yourdatabse.db.
Попробуйте AndroidDBvieweR!
Если вы не хотите использовать
и просто хотите, чтобы файл базы данных находился в 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
Для дальнейшего подробного объяснения проверьте Android-Database-Viewer на Github. https://github.com/shanraisshan/Android-Database-Viewer
Я использую SQLite Database Browser, чтобы увидеть содержимое SQLite DB в Android-разработке. Сначала вы должны вывести файл базы данных с устройства, а затем открыть его в SQLite DB Browser.
Хотя эта база данных напрямую не просматривается на вашем устройстве, я опубликовал простую оболочку script для сброса баз данных на локальную машину:
Он выполняет два различных метода, описанных здесь:
\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-Extension:
-Загрузить этот Questoid SqLiteBrowser: Загрузить здесь.
-Unzip и поместите его в eclipse/dropins (не плагины).
-Проверьте это для получения дополнительной информации Нажмите здесь.
попробуйте facebook Stetho.
Stetho - это отладочный мост для приложений Android, включающий мощные инструменты для разработчиков Chrome и многое другое.
шаг 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);
Это работает с 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, например.
Вы можете попробовать SQLiteOnWeb. Он управляет вашей базой данных SQLite в браузере.
Надеюсь, это поможет вам
Использование терминала Сначала укажите местоположение, в котором 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
Существует TKlerx Android-браузер SQLite для 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 db приложения в chrome, см.
Первое сообщение (fooobar.com/info/61047/...) для меня не работает.
Я написал собственный script для получения файла DB с устройства. Без корня. Работает нормально.
~/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;