Datenbank mit dem Datenbankprüftool debuggen

Mit dem Database Inspector können Sie die Datenbanken Ihrer Anwendung prüfen, abfragen und ändern, während die Anwendung ausgeführt wird. Dies ist besonders nützlich für das Debugging von Datenbanken. Der Database Inspector funktioniert mit einfachem SQLite und mit Bibliotheken, die auf SQLite aufbauen, z. B. Room.

Database Inspector öffnen

So öffnen Sie eine Datenbank im Database Inspector:

  1. Führen Sie Ihre App auf einem Emulator oder verbundenen Gerät mit API-Level 26 oder höher aus.

  2. Wählen Sie in der Menüleiste Ansicht > Toolfenster > App-Prüfung aus.

  3. Wählen Sie den Tab Database Inspector aus.

  4. Wählen Sie im Menü den Prozess der laufenden Anwendung aus.

  5. Die Datenbanken in der aktuell ausgeführten Anwendung werden im Bereich Datenbanken angezeigt. Maximieren Sie den Knoten für die Datenbank, die Sie prüfen möchten.

Daten abrufen und bearbeiten

Im Bereich Datenbanken wird eine Liste der Datenbanken in Ihrer Anwendung und der Tabellen angezeigt, die die jeweilige Datenbank enthält. Doppelklicken Sie auf einen Tabellennamen, um die zugehörigen Daten im Inspector-Fenster rechts anzuzeigen (Abbildung 1). Klicken Sie auf eine Spaltenüberschrift, um die Daten im Inspector-Fenster nach dieser Spalte zu sortieren.

Screenshot des Fensters „Database Inspector“.
Abbildung 1: Fenster „Database Inspector“

So ändern Sie Daten in einer Tabelle:

  1. Doppelklicken Sie auf eine Zelle.
  2. Geben Sie einen neuen Wert ein.
  3. Drücken Sie die Eingabetaste.

Wenn Ihre Anwendung Room verwendet und Ihre UI die Datenbank beobachtet, z. B. mit LiveData oder Flow, sind alle Änderungen an den Daten in der laufenden Anwendung sofort sichtbar. Andernfalls sind die Änderungen nur sichtbar, wenn die Anwendung die geänderten Daten aus der Datenbank das nächste Mal liest.

Änderungen der Live-Datenbank ansehen

Wenn Sie möchten, dass der Database Inspector die Daten, die er bei der Interaktion mit der laufenden Anwendung anzeigt, automatisch aktualisiert, klicken Sie oben im Inspector-Fenster das Kästchen Live updates (Live-Updates) an. Solange Live-Updates aktiviert sind, ist die Tabelle im Inspector-Fenster schreibgeschützt und Sie können ihre Werte nicht ändern.

Wenn Sie die Daten manuell aktualisieren möchten, klicken Sie oben im Inspector-Fenster auf die Schaltfläche Refresh table (Tabelle aktualisieren).

Datenbanken abfragen

Mit dem Database Inspector können Sie Abfragen für die Datenbank der Anwendung ausführen, während die Anwendung ausgeführt wird. Das Tool kann DAO-Abfragen verwenden, wenn Ihre Anwendung Room verwendet, unterstützt aber auch benutzerdefinierte SQL-Abfragen.

DAO-Abfragen ausführen

Wenn Ihre App Room verwendet, bietet Android Studio Gutter-Aktionen, mit denen Sie schnell Abfragemethoden ausführen können, die Sie bereits in Ihren DAO-Klassen definiert haben. Diese Aktionen sind verfügbar, während die Anwendung ausgeführt wird und der Database Inspector in der IDE geöffnet ist.

Klicken Sie zum Ausführen einer Abfragemethode in einer DAO auf die Schaltfläche SQLite-Anweisung im Datenbankprüftool ausführen neben der zugehörigen Annotation @Query.

Screenshot der DAO-Gutter-Aktionen.
Abbildung 2. DAO-Abfragespalten-Aktionen.

Wenn Ihre App mehr als eine Datenbank enthält, werden Sie von Android Studio aufgefordert, die abzufragende Datenbank aus einer Liste auszuwählen. Falls Ihre Abfragemethode benannte bind-Parameter enthält, fordert Android Studio vor dem Ausführen der Abfrage Werte für jeden Parameter an. Die Abfrageergebnisse werden im Inspector-Fenster angezeigt.

Benutzerdefinierte SQL-Abfragen ausführen

Mit dem Datenbankprüftool können Sie auch benutzerdefinierte SQL-Abfragen für die Datenbanken Ihrer Anwendung ausführen, während die Anwendung ausgeführt wird.

So fragen Sie eine Datenbank ab:

  1. Klicken Sie oben im Bereich Datenbanken auf Neue Abfrage öffnen , um einen neuen Tab im Inspektorfenster zu öffnen.

    Screenshot mit der Schaltfläche „Neue Abfrage“
    Abbildung 3: Öffnen Sie den Tab Neue Abfrage.
  2. Enthält Ihre Anwendung mehr als eine Datenbank, wählen Sie die abzufragende Datenbank aus der Liste auf dem Tab Neue Abfrage aus.

  3. Geben Sie oben auf dem Tab Neue Abfrage Ihre benutzerdefinierte SQL-Abfrage in das Textfeld ein.

  4. Klicken Sie auf Ausführen.

Alternativ können Sie die Abfrageverlaufsfunktion verwenden, um eine Abfrage auszuführen, die Sie zuvor verwendet haben:

  1. Klicken Sie auf die Schaltfläche Abfrageverlauf anzeigen Schaltfläche zum Anzeigen des Abfrageverlaufs
, um eine Liste der Abfragen aufzurufen, die Sie zuvor für die ausgewählte Datenbank ausgeführt haben.

    Screenshot mit dem Drop-down-Menü „Abfrageverlauf“
    Abbildung 4: Das Menü „Abfrageverlauf“
  2. Klicken Sie auf eine Abfrage in der Liste, um eine Vorschau der vollständigen Abfrage im Editor zu sehen. Drücken Sie dann die Eingabetaste, um sie in den Editor zu kopieren.

  3. Klicken Sie auf Ausführen, um die Anweisung auszuführen.

Die Abfrageergebnisse auf dem Tab Neue Abfrage sind schreibgeschützt und können nicht geändert werden. Sie können jedoch das benutzerdefinierte SQL-Abfragefeld verwenden, um Modifiziereranweisungen wie UPDATE, INSERT oder DELETE auszuführen.

Wenn Ihre Anwendung den Raum verwendet und Ihre Benutzeroberfläche die Datenbank überwacht, z. B. mit LiveData oder Flow, sind alle Änderungen an den Daten sofort in der laufenden Anwendung sichtbar. Andernfalls sind die Änderungen nur sichtbar, wenn die Anwendung die geänderten Daten das nächste Mal aus der Datenbank liest.

Offlinemodus

In Android Studio 4.2 und höher können Sie die Datenbanken Ihrer App weiter prüfen, nachdem ein Prozess getrennt wurde. Dies erleichtert die Fehlerbehebung Ihrer App nach einem Absturz.

Wenn eine Verbindung getrennt wird, lädt der Database Inspector Ihre Datenbanken herunter und stellt sie Ihnen im Offlinemodus zur Verfügung. Wenn Sie offline sind, können Sie weiterhin Tabellen öffnen und Abfragen ausführen.

Wenn Sie die Verbindung zu einem Live-Anwendungsprozess wiederherstellen, beendet der Database Inspector den Offlinemodus und zeigt Ihnen nur die Daten an, die sich auf dem Gerät befinden. Mit anderen Worten: Im Offlinemodus angezeigte Daten bleiben nicht erhalten, wenn Sie wieder eine Verbindung zu einem App-Prozess herstellen. Aufgrund dieser Einschränkung können Sie mit dem Datenbankprüftool im Offlinemodus weder Daten bearbeiten noch SQL-Änderungen ausführen.

Wenn Sie eine Datenbank im Offlinemodus ansehen, enthält der Prozessname [DETACHED], um anzuzeigen, dass der Inspector nicht mehr mit dem Prozess verknüpft ist. Außerdem gibt das Datenbanksymbol Datenbank offline den Offline-Status an (siehe Abbildung 5).

Datenbankprüftool im Offlinemodus
Abbildung 5: Database Inspector im Offlinemodus.

Datenbankverbindungen offen lassen

Der Database Inspector kann eine Datenbank nur dann ändern, wenn die Anwendung eine Live-Verbindung zu dieser Datenbank aufrechterhält. Wenn Ihre Anwendung also häufig eine Verbindung zu Datenbanken herstellt und trennt, kann es schwierig sein, Fehler in diesen Datenbanken zu beheben. Im Bereich Datenbanken werden offene - und geschlossene -Datenbanken mithilfe von Symbolen identifiziert.

Wenn Sie verhindern möchten, dass Datenbankverbindungen geschlossen werden, setzen Sie oben im Bereich Datenbanken die Option Datenbankverbindungen offen lassen von „Aus“ auf „Ein“ .

Daten aus dem Database Inspector exportieren

Sie können Datenbanken, Tabellen und Abfrageergebnisse aus dem Datenbank-Inspector exportieren, um sie lokal zu speichern, freizugeben oder neu zu erstellen. Wenn Sie ein App-Projekt in Android Studio öffnen und die App für dieses Projekt im Datenbank-Inspector prüfen, können Sie mit dem Exportieren von Daten beginnen:

  • Wählen Sie im Bereich Datenbanken eine Datenbank oder Tabelle aus und klicken Sie oben im Bereich auf In Datei exportieren.
  • Klicken Sie im Bereich Datenbanken mit der rechten Maustaste auf eine Datenbank oder Tabelle und wählen Sie im Kontextmenü In Datei exportieren aus.
  • Wenn Sie eine Tabelle oder ein Abfrageergebniss in einem Tab prüfen, klicken Sie über der Tabelle oder den Abfrageergebnissen auf In Datei exportieren.

Nachdem Sie eine Exportaktion ausgewählt haben, können Sie das Dialogfeld Datenbank exportieren verwenden, um Sie bei den letzten Schritten zu unterstützen (siehe Abbildung 6).

Je nachdem, ob Sie eine Datenbank, eine Tabelle oder Abfrageergebnisse exportieren möchten, haben Sie die Möglichkeit, die Daten in einem oder mehreren der folgenden Formate zu exportieren: DB, SQL oder CSV.

Dialogfeld „Datenbank exportieren“

Abbildung 6: Das Dialogfeld „Datenbank exportieren“.

Weitere Informationen

Weitere Informationen zum Database Inspector finden Sie in den folgenden Ressourcen:

Blogposts

Videos