Cómo usar ADB en Android Studio para ver una base de datos SQLite

Necesito ver mi SQLite db pero no sé cómo hacerlo. He ido a http://www.sqlite.org/download.html y descargué el shell de línea de comandos para mi sistema operativo, pero cuando ejecuto el progtwig y adb ... obtengo errores.

Nota: Estoy usando Android Studio, así que supongo que no necesito instalar nada adicional porque recuerdo que Android Studio dijo que tenía todas las herramientas de SDK necesarias.

La forma más fácil: conectarse a Sqlite3 a través de ADB Shell

No he encontrado ninguna forma de hacerlo en Android Studio, pero accedo a la base de datos con un shell remoto en lugar de extraer el archivo cada vez.

Encuentra toda la información aquí: http://developer.android.com/tools/help/sqlite3.html

1- Vaya a la carpeta de herramientas de plataforma en un símbolo del sistema

2- Ingrese el comando adb devices para obtener la lista de sus dispositivos

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

3- Conecte un caparazón a su dispositivo:

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

4a- Puede omitir este paso en el dispositivo rooteado

 run-as  

4b- Navega a la carpeta que contiene tu archivo db:

 cd data/data//databases/ 

5- Ejecute sqlite3 para conectarse a su db:

 sqlite3 .db 

6- ejecute comandos sqlite3 que le gusten, por ejemplo:

 Select * from table1 where ...; 

Nota: Encuentre más comandos para ejecutar a continuación.

SQLite cheatsheet

Hay algunos pasos para ver las tablas en una base de datos SQLite:

  1. Enumere las tablas en su base de datos:

     .tables 
  2. Enumera cómo se ve la tabla:

     .schema tablename 
  3. Imprime toda la tabla:

     SELECT * FROM tablename; 
  4. Enumere todos los comandos de solicitud de SQLite disponibles:

     .help 

La forma más sencilla para mí es usar el Device Monitor de Android para obtener el archivo de base de datos y el navegador SQLite DataBase para ver el archivo mientras aún uso Android Studio para progtwigr Android.

1) Ejecutar y ejecutar la aplicación de base de datos con el emulador de Android de Android Studio. (Inserté algunos datos en la aplicación de base de datos para verificar)

2) Ejecutar Android Device Monitor. ¿Como correr?; Vaya a [your_folder] > sdk >tools . Puedes ver monitor.bat en esa carpeta. shift + right click dentro de la carpeta y seleccione ” Open command window here “. Esta acción lanzará el símbolo del sistema. tipo monitor y Android Device Monitor se lanzará.

3) Seleccione el emulador que está ejecutando actualmente. Luego vaya a data>data>[your_app_name]>databases

4) Haga clic en el icono (ubicado en la esquina superior derecha) (desplace el cursor sobre el ícono y verá “extraer un archivo del dispositivo”) y guarde en cualquier lugar que desee

5) Inicie el navegador SQLite DataBase. Arrastre y suelte el archivo que acaba de guardar en ese navegador.

6) Vaya a la pestaña Browse Data y seleccione su tabla para ver.

enter image description hereenter image description here

El problema que está teniendo es común y no se explica bien en la documentación. Los dispositivos normales no incluyen el binario de la base de datos sqlite3, razón por la cual está obteniendo un error. El Emeulator de Android, OSX, Linux (si está instalado) y Windows (después de instalarlo) tienen el binario, por lo que puede abrir una base de datos localmente en su máquina.

La solución alternativa es copiar la base de datos desde su dispositivo a su máquina local. Esto se puede lograr con ADB, pero requiere una serie de pasos.

Antes de comenzar, necesitarás algo de información:

  • ruta del SDK (si no está incluido en su entorno de SO)
  • su , por ejemplo, com.example.application
  • una para colocar su base de datos, ej. ~/Desktop o %userprofile%\Desktop

A continuación, tendrá que comprender qué terminal cada comando se escribe en el primer carácter en los ejemplos a continuación no se escribe, pero le permite saber en qué caparazón estamos:

  • > = usted símbolo del sistema del SO
  • $ = ADB comando de shell prompt
  • ! = Shell ADB como símbolo del sistema de administración
  • %

Luego ingrese los siguientes comandos desde la Terminal o Comando (no ingrese el primer carácter o texto en () )

 > adb shell $ su ! cp /data/data//Databases/ /sdcard ! exit $ exit > adb pull /sdcard/  > sqlite3  % .dump % .exit (to exit sqldb) 

Esta es una forma realmente redonda de copiar la base de datos a su máquina local y leer la base de datos de manera local. Hay SO y otros recursos que explican cómo instalar el binario sqlite3 en su dispositivo desde un emulador, pero para un acceso de única vez este proceso funciona.

Si necesita acceder a la base de datos de forma interactiva, le sugiero que ejecute su aplicación en un emulador (que ya tenía sqlite3) o que instale sqlite en su ruta de dispositivos / xbin .

¿Qué menciona al escribir adb?

 step1. >adb shell step2. >cd data/data step3. >ls -l|grep "your app package here" step4. >cd "your app package here" step5. >sqlite3 xx.db 
  1. Abre una terminal
  2. cd (para mí en Windows cd C:\Users\Willi\AppData\Local\Android\sdk )
  3. cd platform-tools
  4. adb shell (esto funciona solo si solo se está ejecutando un emulador)
  5. cd data/data
  6. su (ganar privilegios de superusuario)
  7. cd /databases
  8. sqlite3
  9. emitir sentencias de SQL ( importante: rescindirlas con ; contrario, la sentencia no se emite y se divide en una nueva línea en su lugar).

Nota: Use ls (Linux) o dir (Windows) si necesita enumerar los contenidos del directorio.

Dependiendo de los dispositivos, es posible que no encuentre el comando sqlite3 en adb shell. En ese caso, es posible que desee seguir esto:

adb shell

$ run-as package.name
$ cd ./databases/
$ ls -l # Encuentra los permisos actuales – r = 4, w = 2, x = 1
$ chmod 666 ./dbname.db
$ exit
$ exit
adb pull /data/data/package.name/databases/dbname.db ~ / Desktop /
adb push ~ / Desktop / dbname.db /data/data/package.name/databases/dbname.db
adb shell
$ run-as package.name
$ chmod 660 ./databases/dbname.db # Restaurar permisos originales
$ exit
$ exit

para referencia, vaya a https://stackoverflow.com/a/17177091/3758972 .

Puede haber casos cuando obtiene “objeto remoto no encontrado” después de seguir el procedimiento anterior. Luego cambie el permiso de su carpeta de base de datos a 755 en adb shell.

$ chmod 755 bases de datos /

Pero tenga en cuenta que solo funcionará en la versión de Android <21.

Puede usar una herramienta muy buena llamada Stetho al agregar esto al archivo build.gradle :

 compile 'com.facebook.stetho:stetho:1.4.1' 

Y lo inicializó dentro de su método Application o Activity onCreate() :

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Stetho.initializeWithDefaults(this); setContentView(R.layout.activity_main); } 

Luego puede ver los registros de db en chrome en la dirección:

 chrome://inspect/#devices 

Para más detalles puedes leer mi publicación: Cómo ver fácilmente tus registros de db