Esegui il debug del tuo database con Database Inspector

Database Inspector ti consente di ispezionare, eseguire query e modificare i database della tua app mentre è in esecuzione. Ciò è particolarmente utile per il debug del database. Database Inspector funziona con SQLite semplice e con librerie basate su SQLite, come Room.

Apri Database Inspector

Per aprire un database in Database Inspector, procedi nel seguente modo:

  1. Esegui la tua app su un emulatore o un dispositivo connesso con livello API 26 o successivo.

  2. Nella barra dei menu, seleziona Visualizza > Finestre degli strumenti > Controllo app.

  3. Seleziona la scheda Database Inspector.

  4. Seleziona il processo dell'app in esecuzione dal menu.

  5. I database nell'app attualmente in esecuzione vengono visualizzati nel riquadro Database. Espandi il nodo del database che vuoi ispezionare.

Visualizza e modifica i dati

Il riquadro Database mostra un elenco dei database nell'app e le tabelle contenute in ogni database. Fai doppio clic sul nome di una tabella per visualizzare i dati nella finestra di ispezione a destra, come mostrato nella figura 1. Fai clic sull'intestazione di una colonna per ordinare i dati nella finestra di controllo in base a quella colonna.

Screenshot della finestra Database Inspector.
Figura 1. La finestra Database Inspector.

Per modificare i dati in una tabella:

  1. Fai doppio clic su una cella.
  2. Digita un nuovo valore.
  3. Premi Invio.

Se la tua app utilizza la stanza virtuale e la tua UI osserva il database, ad esempio con LiveData o Flow, le eventuali modifiche apportate ai dati sono immediatamente visibili nell'app in esecuzione. In caso contrario, le modifiche saranno visibili solo la prossima volta che l'app legge i dati modificati dal database.

Visualizza le modifiche in tempo reale al database

Se vuoi che Database Inspector aggiorni automaticamente i dati presentati mentre interagisci con l'app in esecuzione, seleziona la casella di controllo Aggiornamenti in tempo reale nella parte superiore della finestra di controllo. Quando gli aggiornamenti in tempo reale sono abilitati, la tabella nella finestra di ispezione è di sola lettura e non è possibile modificarne i valori.

In alternativa, per aggiornare manualmente i dati, fai clic sul pulsante Aggiorna tabella nella parte superiore della finestra di controllo.

Esegui query sui database

Database Inspector può eseguire query sul database della tua app mentre l'app è in esecuzione. Lo strumento può utilizzare query DAO se la tua app utilizza Room, ma supporta anche query SQL personalizzate.

Esegui query DAO

Se la tua app utilizza Room, Android Studio offre azioni grotter che ti consentono di eseguire rapidamente metodi di query che hai già definito nelle classi DAO. Queste azioni sono disponibili mentre l'app è in esecuzione e Database Inspector è aperto nell'IDE.

Per eseguire qualsiasi metodo di query in un DAO, fai clic sul pulsante Esegui l'istruzione SQLite in Database Inspector accanto alla relativa annotazione @Query.

Screenshot delle azioni di grondaia DAO.
Figura 2. Azioni dei gutter delle query DAO.

Se la tua app include più database, Android Studio ti chiede di selezionare il database su cui eseguire la query da un elenco. Se il metodo di query include parametri di binding denominati, Android Studio richiede i valori per ciascun parametro prima di eseguire la query. I risultati della query vengono visualizzati nella finestra di controllo.

Esegui query SQL personalizzate

Puoi anche utilizzare Database Inspector per eseguire query SQL personalizzate sui database della tua app mentre è in esecuzione.

Per eseguire query su un database, segui questi passaggi:

  1. Fai clic su Apri nuova scheda Query nella parte superiore del riquadro Database per aprire una nuova scheda nella finestra di controllo.

    Screenshot che mostra il pulsante Nuova scheda Query.
    Figura 3. Apri una scheda Nuova query.
  2. Se la tua app include più di un database, seleziona quello su cui eseguire una query dall'elenco disponibile nella scheda Nuova query.

  3. Nella parte superiore della scheda Nuova query, digita la query SQL personalizzata nel campo di testo.

  4. Fai clic su Esegui.

In alternativa, utilizza la funzionalità di cronologia delle query per eseguire una query che hai utilizzato in precedenza:

  1. Fai clic sul pulsante Mostra cronologia query Mostra pulsante cronologia query
per visualizzare un elenco delle query eseguite in precedenza sul database selezionato.

    Screenshot che mostra il menu a discesa della cronologia delle query.
    Figura 4. Il menu della cronologia delle query.
  2. Fai clic su una query nell'elenco per visualizzare un'anteprima della query completa nell'editor e premi Invio per copiarla nell'editor.

  3. Fai clic su Esegui per eseguire l'istruzione.

I risultati della query visualizzati nella scheda Nuova query sono di sola lettura e non possono essere modificati. Tuttavia, puoi utilizzare il campo di query SQL personalizzato per eseguire istruzioni di modifica come UPDATE, INSERT o DELETE.

Se la tua app usa la stanza virtuale e la tua UI osserva il database, ad esempio con LiveData o Flow, tutte le modifiche apportate ai dati sono immediatamente visibili nell'app in esecuzione. In caso contrario, le modifiche sono visibili soltanto la volta successiva che l'app legge i dati modificati dal database.

Modalità offline

In Android Studio 4.2 e versioni successive, puoi continuare a esaminare i database della tua app dopo la disconnessione di un processo. In questo modo è più facile eseguire il debug dell'app dopo un arresto anomalo.

Quando si verifica una disconnessione, Database Inspector scarica i tuoi database e li rende disponibili in modalità offline. Quando sei offline, puoi comunque aprire le tabelle ed eseguire query.

Quando ti riconnetti a un processo dell'app pubblicato, Database Inspector lascia la modalità offline e mostra solo i dati presenti sul dispositivo. In altre parole, i dati mostrati in modalità offline non vengono mantenuti quando ti riconnetti al processo di un'app. A causa di questa limitazione, Database Inspector non consente di modificare i dati o eseguire istruzioni SQL di modifica in modalità offline.

Quando visualizzi un database in modalità offline, il nome del processo include [DETACHED] per indicare che la funzionalità di controllo non è più collegata al processo. Inoltre, l'icona del database Database
offline indica lo stato offline, mostrato nella figura 5.

Database Inspector in modalità offline
Figura 5. Database Inspector in modalità offline.

Mantieni aperte le connessioni al database

Database Inspector può modificare un database solo mentre la tua app mantiene una connessione in tempo reale a quel database. Ciò significa che se la tua app si connette e si disconnette frequentemente dai database, può essere difficile eseguire il debug di questi database. Il riquadro Database utilizza le icone per identificare i database aperto e chiusi .

Inoltre, per impedire la chiusura delle connessioni ai database, attiva l'opzione Mantieni aperte le connessioni ai database da Disattivata ad Attiva nella parte superiore del riquadro Database.

Esporta i dati da Database Inspector

Puoi esportare database, tabelle e risultati delle query da Database Inspector per salvare, condividere o ricreare in locale. Quando apri un progetto dell'app in Android Studio e controlli l'app per quel progetto in Database Inspector, puoi iniziare a esportare i dati in uno dei seguenti modi:

  • Seleziona un database o una tabella nel riquadro Database e fai clic su Esporta in file nella parte superiore del riquadro.
  • Fai clic con il pulsante destro del mouse su un database o su una tabella nel riquadro Database e seleziona Esporta in file dal menu contestuale.
  • Quando esamini una tabella o i risultati della query in una scheda, fai clic su Esporta in file sopra la tabella o i risultati della query.

Dopo aver selezionato un'azione di esportazione, utilizza la finestra di dialogo Esporta database per eseguire i passaggi finali, come mostrato nella Figura 6.

A seconda che tu stia tentando di esportare un database, una tabella o i risultati di una query, hai la possibilità di esportare i dati in uno o più dei seguenti formati: DB, SQL o CSV.

Finestra di dialogo Esporta database

Figura 6. La finestra di dialogo Esporta database.

Risorse aggiuntive

Per saperne di più su Database Inspector, consulta le seguenti risorse aggiuntive:

Post del blog

Video