Android Studio 4.1 以降では、Database Inspector を使用してアプリの実行中にアプリのデータベースを検査、クエリ、変更できます。これは、特にデータベースのデバッグで役立ちます。Database Inspector は、プレーン SQLite や、Room などの SQLite の上に構築されたライブラリで動作します。
Database Inspector を開く
Database Inspector でデータベースを開く手順は次のとおりです。
API レベル 26 以降を搭載した接続デバイスまたはエミュレータでアプリを実行します。
メニューバーから [View] > [Tool Windows] > [Database Inspector] を選択します。
プルダウン メニューから、実行中のアプリプロセスを選択します。
[Databases] ペインに、現在実行中のアプリのデータベースが表示されます。検査するデータベースのノードを展開します。
データを表示、変更する
[Databases] ペインには、アプリのデータベースのリストと、各データベースに含まれるテーブルが表示されます。テーブル名をダブルクリックすると、そのデータが Inspector ウィンドウの右側に表示されます。列見出しをクリックすると、その列で Inspector ウィンドウのデータを並べ替えることができます。
![[Database Inspector] ウィンドウのスクリーンショット。](https://developer.android.google.cn/studio/images/inspect/db-inspector-window.png?hl=ja)
テーブル内のデータを変更するには、セルをダブルクリックし、新しい値を入力して Enter キーを押します。アプリで Room を使用し、UI で(LiveData
や Flow
などによって)データベースを監視している場合、データに加えた変更は実行中のアプリですぐに表示されます。それ以外の場合、変更内容は、変更したデータをアプリで次にデータベースから読み取るときにのみ表示されます。
自動のデータベース変更を確認する
実行中のアプリを操作したとき、Database Inspector で表示されるデータを自動的に更新する場合は、Inspector ウィンドウの上部にある [Live updates] チェックボックスをオンにします。ライブ アップデートが有効になっている場合、Inspector ウィンドウのテーブルは読み取り専用になるため、値の変更はできません。
また、Inspector ウィンドウ上部の [Refresh table] ボタンをクリックしてデータを手動で更新することもできます。
データベースにクエリを実行する
Database Inspector は、アプリの実行中にアプリのデータベースに対してクエリを実行できます。アプリで Room を使用している場合は DAO クエリを使用できますが、カスタム SQL クエリもサポートされています。
DAO クエリを実行する
アプリで Room を使用している場合、Android Studio はガター アクションを提供し、DAO クラスで定義済みのクエリメソッドをすばやく実行できます。こうしたアクションは、アプリが実行中であり、Database Inspector が IDE で開いているときに利用できます。@Query
アノテーションの横にある Run SQLite statement in Database Inspector ボタンをクリックすると、DAO で任意のクエリメソッドを実行できます。

アプリに複数のデータベースが含まれている場合、Android Studio には、クエリを実行するデータベースをプルダウン リストから選択するよう求めるプロンプトが表示されます。クエリメソッドに名前付きバインド パラメータが含まれている場合、Android Studio では、クエリを実行する前に各パラメータの値がリクエストされます。クエリ結果が Inspector ウィンドウに表示されます。
カスタム SQL クエリを実行する
Database Inspector を使用して、アプリの実行中にアプリのデータベースに対してカスタム SQL クエリを実行することもできます。データベースにクエリを実行する手順は次のとおりです。
[Databases] ペインの上部にある Open New Query tab
をクリックし、Inspector ウィンドウに新しいタブを開きます。
図 3. [New Query] タブを開く アプリに複数のデータベースが含まれている場合は、[New Query] タブの上部にあるプルダウン リストから、クエリを実行するデータベースを選択します。
[New Query] タブの上部にあるテキスト フィールドにカスタム SQL クエリを入力し、[Run] をクリックします。
[New Query] タブに表示されるクエリ結果は読み取り専用であり、変更できません。ただし、カスタム SQL クエリ フィールドを使用して、UPDATE
、INSERT
、DELETE
などの修飾子ステートメントを実行することは可能です。アプリで Room を使用し、UI で(LiveData
や Flow
などによって)データベースを監視している場合、データに加えた変更は実行中のアプリですぐに表示されます。それ以外の場合、変更内容は、変更したデータをアプリで次にデータベースから読み取るときにのみ表示されます。
データベース接続を開いたままにする
Database Inspector は、アプリがデータベースへのライブ接続を維持しているときにしか、データベースとやり取りできません。つまり、アプリがデータベースへの接続と切断を頻繁に行う場合、データベースの検査が難しくなることがあります。[Databases] ペインはアイコンを使用して、開いている()データベースと閉じているデータベース(
)を区別します。
また、[Databases] ペインの上部で Keep database connections open をオフ()からオン(
)に切り替えることで、データベース接続が閉じないようにできます。
参考情報
Database Inspector の詳細については、以下の参考情報をご覧ください。
ブログ投稿
動画
- Database Inspector(11 Weeks of Android)