Cómo depurar tu base de datos con el Inspector de bases de datos

En Android Studio 4.1 y versiones posteriores, el Inspector de bases de datos te permite inspeccionar, buscar y modificar las bases de datos de tu app mientras esta se ejecuta. Esto es particularmente útil para depurar bases de datos. El Inspector de bases de datos funciona con SQLite simple y bibliotecas compiladas sobre SQLite, como Room.

Cómo abrir el Inspector de bases de datos

Para abrir una base de datos en el inspector, haz lo siguiente:

  1. Ejecuta tu app en un emulador o un dispositivo conectado con nivel de API 26 o posterior.

  2. Selecciona View > Tool Windows > App Inspection en la barra de menú.

  3. Elige la pestaña Database Inspector.

  4. Selecciona el proceso de la app en ejecución en el menú desplegable.

  5. Las bases de datos de la app que se encuentra en ejecución se muestran en el panel Databases. Expande el nodo de la base de datos que desees inspeccionar.

Cómo consultar y modificar datos

En el panel Databases, se muestra una lista de las bases de datos de tu app y las tablas que contiene cada base de datos. Haz doble clic en el nombre de una tabla para ver sus datos en el lado derecho de la ventana del inspector. Puedes hacer clic en el encabezado de una columna para ordenar los datos que se muestran en la ventana del inspector en función de esa columna.

Captura de pantalla de la ventana del Inspector de bases de datos
Figura 1: Ventana del Inspector de bases de datos

Para modificar los datos de una tabla, haz doble clic en una celda, escribe un valor nuevo y presiona Intro. Si tu app usa Room y la IU observa la base de datos (como con LiveData o Flow), cualquier cambio que realices en los datos se reflejará de inmediato en la app en ejecución. De lo contrario, los cambios solo se verán la próxima vez que tu app lea los datos modificados de la base de datos.

Cómo ver los cambios de las bases de datos en tiempo real

Si quieres que el Inspector de bases de datos actualice automáticamente los datos que muestra a medida que interactúas con la app en ejecución, marca la casilla de verificación Live updates ubicada en la parte superior de la ventana del inspector. Cuando esta opción está habilitada, la tabla de la ventana del inspector será de solo lectura, y no podrás modificar sus valores.

Como alternativa, puedes actualizar manualmente los datos haciendo clic en el botón Refresh table ubicado en la parte superior de la ventana del inspector.

Cómo buscar en las bases de datos

El Inspector de bases de datos puede ejecutar búsquedas en la base de datos de la app mientras está activa. La herramienta puede ejecutar búsquedas DAO si tu app usa Room, pero también admite búsquedas personalizadas de SQL.

Cómo ejecutar búsquedas DAO

Si tu app usa Room, Android Studio proporciona acciones del margen que te permiten ejecutar rápidamente los métodos de búsqueda que hayas definido en tus clases DAO. Estas acciones estarán disponibles mientras tu app esté en ejecución y el Inspector de bases de datos esté abierto en el IDE. Puedes ejecutar cualquier método de búsqueda definido en una clase DAO haciendo clic en el botón Run SQLite statement in Database Inspector que aparece junto a una anotación @Query.

Captura de pantalla de las acciones del margen de DAO
Figura 2: Acciones del margen de búsqueda de DAO

Si tu app incluye más de una base de datos, Android Studio te solicitará que selecciones aquella en la que desees buscar en la lista desplegable. Si tu método de búsqueda incluye parámetros de vinculación con nombre, Android Studio solicita valores para cada parámetro antes de ejecutar la búsqueda. Los resultados de la búsqueda se muestran en la ventana del inspector.

Cómo ejecutar búsquedas personalizadas de SQL

También puedes usar el Inspector de bases de datos para ejecutar búsquedas personalizadas de SQL en las bases de datos de la app mientras esta está activa. Para buscar en una base de datos, sigue estos pasos:

  1. Haz clic en la pestaña Open New Query en la parte superior del panel Databases para abrir una pestaña nueva en la ventana del inspector.

    Captura de pantalla que muestra el nuevo botón de la pestaña New Query
    Figura 3: Abre una pestaña New Query.
  2. Si tu app incluye más de una base de datos, selecciona aquella en la que desees consultar en la lista desplegable de la pestaña New Query.

  3. Escribe tu búsqueda personalizada de SQL en el campo de texto de la parte superior de la pestaña New Query y, luego, haz clic en Run.

Como alternativa, puedes usar la función de historial de búsquedas para realizar una búsqueda que hiciste con anterioridad:

  1. Haz clic en el botón Show query history Botón para mostrar el historial de búsquedas para ver una lista de las búsquedas que ya hiciste en la base de datos seleccionada.

    Captura de pantalla en la que se muestra el menú desplegable del historial de búsquedas
    Figura 4. Menú del historial de búsquedas
  2. Haz clic en una búsqueda de la lista a fin de obtener una vista previa de la búsqueda completa en el editor y presiona Intro para copiarla en el editor.

  3. Haz clic en Run para ejecutar la instrucción.

Los resultados de la búsqueda que se muestran en la pestaña New Query son de solo lectura y no se pueden modificar. Sin embargo, puedes usar el campo de búsqueda personalizada de SQL para ejecutar declaraciones modificadoras, como UPDATE, INSERT o DELETE. Si tu app usa Room y la IU observa la base de datos (como con LiveData o Flow), cualquier cambio que realices en los datos se reflejará de inmediato en la app en ejecución. De lo contrario, los cambios solo se verán la próxima vez que tu app lea los datos modificados de la base de datos.

Modo sin conexión

En Android Studio 4.2 y versiones posteriores, puedes seguir inspeccionando las bases de datos de tu app después de desconectarse un proceso. Esto permite que sea más fácil depurar tu app después de una falla.

Cuando se produce una desconexión, el Inspector de bases de datos descarga tus bases de datos y las pone a tu disposición en el modo sin conexión. Cuando no tengas conexión, podrás acceder a las tablas y ejecutar consultas.

Cuando vuelves a conectarte a un proceso de la app activa, el Inspector de bases de datos deja el modo sin conexión y solo muestra los datos que están en el dispositivo. En otras palabras, los datos que se muestran en el modo sin conexión no se conservan cuando vuelves a conectarte a un proceso de la app. Debido a esta limitación, el Inspector de bases de datos no te permite editar datos ni ejecutar instrucciones de SQL de modificación en el modo sin conexión.

Cómo mantener abiertas las conexiones de bases de datos

El Inspector de bases de datos solo puede modificar una base de datos mientras tu app mantiene una conexión activa con esa base de datos. Esto significa que, si tu app se conecta a las bases de datos y se desconecta de ellas con frecuencia, podría ser difícil depurarlas. El panel Databases usa íconos que te permiten identificar las bases de datos abiertas () y cerradas ().

Además, puedes evitar que estas conexiones se cierren cambiando la opción Keep database connections open de desactivada () a activada () en la parte superior del panel Databases.

Recursos adicionales

Si deseas obtener más información sobre el Inspector de bases de datos, consulta los siguientes recursos adicionales:

Entradas de blog

Videos