¿Cómo veo la base de datos SQLite en un dispositivo Android?

Tengo un conjunto de datos en una base de datos SQLite. Necesito ver la base de datos en un dispositivo. ¿Cómo puedo hacer eso?

He verificado el modo ddms. Los datos en el explorador de archivos están vacíos.

Aquí hay instrucciones paso a paso (en su mayoría tomadas de una combinación de las otras respuestas). Esto funciona incluso en dispositivos que no están rooteados.

  1. Conecte su dispositivo e inicie la aplicación en modo de depuración.

  2. Puede usar adb -d shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/" para ver cuál es el nombre de archivo de la base de datos.

Aviso: com.yourpackge.name es el nombre del paquete de su aplicación. Puedes obtenerlo del archivo de manifiesto.

  1. Copie el archivo de la base de datos desde la carpeta de su aplicación a su tarjeta SD.

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

Aviso: filename.sqlite es el nombre de su base de datos que utilizó cuando creó la base de datos

  1. Tire de los archivos de la base de datos a su máquina:

    adb pull /sdcard/filename.sqlite

Esto copiará la base de datos de la tarjeta SD al lugar donde existe su ADB.

  1. Instale el Administrador de SQLite de Firefox: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

  2. Abra el Administrador de SQLite de Firefox (Herramientas-> Administrador de SQLite) y abra su archivo de base de datos desde el paso 3 anterior.

  3. ¡Disfrutar!

Tomado desde aquí , puedes probar:

  1. Biblioteca Stetho de fuente abierta de Facebook

En 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' } 

Inicialice la biblioteca en el objeto de la aplicación:

 Stetho.initializeWithDefaults(this); 

Y puede ver su base de datos en Chrome desde chrome://inspect

  1. Otra opción es este complemento (no gratuito)
  2. Y la última es esta biblioteca de código abierto / gratuito para ver los contenidos de DB en el navegador https://github.com/amitshekhariitbhu/Android-Debug-Database

La mejor forma de ver y administrar su base de datos de aplicaciones de Android es usar la biblioteca DatabaseManager_For_Android .

Es un solo archivo de actividad de Java; solo agrégalo a tu carpeta de origen. Puede ver las tablas en la base de datos de su aplicación, actualizar, eliminar e insertar filas en su tabla. Todo desde tu aplicación

Cuando finalice el desarrollo, elimine el archivo Java de su carpeta src. Eso es.

Puede ver la demostración de 5 minutos, Database Manager for Android SQLite Database .

La mejor forma que encontré hasta ahora es usar la herramienta Android-Debug-Database.

Es increíblemente fácil de usar y configurar, solo agrega la dependencia y conéctate a la interfaz de la base de datos del dispositivo a través de la web. No es necesario rootear el teléfono ni agregar actividades o lo que sea. Estos son los pasos:

PASO 1

Agregue la siguiente dependencia al archivo Gradle de su aplicación y ejecute la aplicación.

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

PASO 2

Abra su navegador y visite la dirección IP de su teléfono en el puerto 8080. La URL debería ser como: http://YOUR_PHONE_IP_ADDRESS:8080 . Se le presentará lo siguiente:

NOTA: También puede obtener siempre la URL de la dirección de depuración de su código llamando al método DebugDB.getAddressLog();

enter image description here

Para obtener la IP de mi teléfono, actualmente uso Ping Tools, pero hay muchas alternativas.

PASO 3

¡Eso es!


Más detalles en la documentación oficial: https://github.com/amitshekhariitbhu/Android-Debug-Database

Si está utilizando un dispositivo real y no está rooteado, no es posible ver su base de datos en FileExplorer porque, por algún motivo de seguridad, esa carpeta está bloqueada en el sistema Android. Y si lo está utilizando en un emulador, lo encontrará en FileExplorer , / data / data / your package name / databases / yourdatabse.db .

Puedes hacerlo:

  1. adb shell
  2. cd /go/to/databases
  3. sqlite3 database.db
  4. En el indicador sqlite> , escriba .tables . Esto le dará todas las tablas en el archivo database.db.
  5. select * from table1;

Prueba AndroidDBvieweR !

  • No es necesario que su dispositivo sea ENRAIZADO
  • No es necesario importar el archivo de base de datos de la aplicación
  • ¡Pocas configuraciones y estás listo!

AndroidDBvieweR

Si no quieres usar

  1. adb
  2. Biblioteca de terceros o
  3. dependencia de gradle, etc.

y solo quiere el archivo de base de datos en su tarjeta SD , esta es la solución.

copia la clase DatabaseUtil.java en tu proyecto

 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 //  //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()) . . 

y simplemente llame al método copyDatabaseToExtStg () desde cualquier actividad en su aplicación


esto copiará la carpeta de la base de datos en la ubicación sdcard / shanraisshan / your_database_file

La imagen muestra MyDatabase.sqlite presente en la tarjeta SD


Para una explicación más detallada, consulte Android-Database-Viewer en Github. https://github.com/shanraisshan/Android-Database-Viewer

He estado usando SQLite Database Browser para ver el contenido SQLite DB en el desarrollo de Android. Primero tiene que extraer el archivo de la base de datos del dispositivo y luego abrirlo en el navegador SQLite DB.

Aunque esto no muestra la base de datos en su dispositivo directamente, he publicado un script de shell simple para descargar bases de datos a su equipo local:

https://github.com/Pixplicity/dbdump

Realiza dos métodos distintos que se describen aquí:

  1. En primer lugar, intenta hacer que el archivo sea accesible para otros usuarios e intentar extraerlo del dispositivo.
  2. Si eso falla, transmite los contenidos del archivo sobre la terminal a la máquina local. Realiza un truco adicional para eliminar los caracteres que algunos dispositivos generan en el shell.

Desde aquí puede usar una variedad de aplicaciones CLI o GUI SQLite, como sqlite3 o sqlitebrowser , para explorar los contenidos de la base de datos.

Sigue estos pasos

1 > Descargue el archivo * .jar desde aquí .

2 > Coloque el archivo * .jar en la carpeta eclipse / dropins / y reinicie eclipse.

3 > En la esquina superior derecha de eclipse, haga clic en el ícono DDMS.

4 > Seleccione el emulador adecuado en el panel izquierdo.

5 En la pestaña Explorador de archivos en el panel principal, vaya a /data/data/[YOUR.APP.NAMESPACE]/databases.

6 > Debajo del ícono DDMS, debe haber un nuevo icono azul de una Base de datos iluminada cuando selecciona su base de datos. Haga clic en él y verá una pestaña Questoid Sqlite Manager abrir para ver sus datos.

* Nota: Si la base de datos no se enciende, puede deberse a que su base de datos no tiene una extensión de archivo * .db. Asegúrese de que su base de datos se llame [DATABASE_NAME] .db

* Nota: si desea utilizar una base de datos sin extensión .db:

Descargue este Questoid SqLiteBrowser: Descargue aquí .

– Descomprimir y ponerlo en eclipse / dropins (no complementos).

-Verifique esto para obtener más información Haga clic aquí .

prueba facebook Stetho.

Stetho es un puente de depuración para aplicaciones de Android, lo que permite las potentes herramientas de desarrollo de Chrome y mucho más.

https://github.com/facebook/stetho

paso 1 Copia esta clase en tu paquete

El paso 2 pone el siguiente código en su clase que extiende SQLiteOpenHelper.

  //-----------------for show databasae table---------------------------------------- public ArrayList 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 alc = new ArrayList(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; } } 

paso 3 registrarse en manifiesto

  

etapa 4

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

Esto funciona con Android 6.0 (al menos, las aplicaciones depurables):

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

Entonces, simplemente puede ver la base de datos con aSQLiteManager, por ejemplo.

Puede probar SQLiteOnWeb . Administra su base de datos SQLite en el navegador.

Espero que esto te ayude

El uso de Terminal First indica su ubicación donde se encuentra andriod sdk

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

luego verifique la lista de dispositivos conectados usando

  adb devices 

y luego ejecuta este comando para copiar el archivo del dispositivo a tu sistema

 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/*" 

Puede encontrar el archivo de base de datos en esta ruta

  Android\sdk\platform-tools\tempDB\databases 

Existe el navegador Android SQLite de TKlerx para Eclipse , y es totalmente funcional junto con Android Studio. Lo recomendaré, porque es inmensamente práctico.

Para instalarlo en Device Monitor, simplemente coloque el archivo JAR en [Path to Android SDK folder]/sdk/tools/lib/monitor-[...]/plugins .

Usando el explorador de archivos, puede ubicar su archivo de base de datos de esta manera:

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

Luego puede usar cualquier SQLite para explorar su base de datos. Uso el complemento SQLite Manager Firefox. Es lindo, pequeño y rápido.

Encontré stetho biblioteca muy simple para navegar sqlite db de la aplicación en cromo, ver

La primera publicación ( https://stackoverflow.com/a/21151598/4244605 ) no funciona para mí.

Escribí un script propio para obtener el archivo DB del dispositivo. Sin raíz Trabajando bien

  1. Copie la secuencia de comandos al directorio con adb (por ejemplo: ~/android-sdk/platform-tools ).
  2. El dispositivo debe estar conectado a la PC.
  3. Utilice ./getDB.sh -p para obtener el nombre de las bases de datos.

Uso: ./getDB.sh -p -n -s para obtener el archivo DB en este directorio (donde se ejecuta el script).

Recomiendo que establezca el nombre de archivo de DB como * .sqlite y lo abra con el complemento de Firefox: SQLite Manager.

(Hace mucho tiempo que escribí algo en Bash. Puede editar este código).

 #!/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;