Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Database Inspector を使用してデータベースをデバッグする

Android Studio 4.1 以降では、Database Inspector を使用してアプリの実行中にアプリのデータベースを検査、クエリ、変更できます。これは、特にデータベースのデバッグで役立ちます。Database Inspector は、プレーン SQLite や、Room などの SQLite の上に構築されたライブラリで動作します。

Database Inspector を開く

Database Inspector でデータベースを開く手順は次のとおりです。

  1. API レベル 26 以降を搭載した接続デバイスまたはエミュレータでアプリを実行します。

  2. メニューバーから [View] > [Tool Windows] > [Database Inspector] を選択します。

  3. プルダウン メニューから、実行中のアプリプロセスを選択します。

  4. [Databases] ペインに、現在実行中のアプリのデータベースが表示されます。検査するデータベースのノードを展開します。

データを表示、変更する

[Databases] ペインには、アプリのデータベースのリストと、各データベースに含まれるテーブルが表示されます。テーブル名をダブルクリックすると、そのデータが Inspector ウィンドウの右側に表示されます。列見出しをクリックすると、その列で Inspector ウィンドウのデータを並べ替えることができます。

[Database Inspector] ウィンドウのスクリーンショット。
図 1. [Database Inspector] ウィンドウ

テーブル内のデータを変更するには、セルをダブルクリックし、新しい値を入力して Enter キーを押します。アプリで Room を使用し、UI で(LiveDataFlow などによって)データベースを監視している場合、データに加えた変更は実行中のアプリですぐに表示されます。それ以外の場合、変更内容は、変更したデータをアプリで次にデータベースから読み取るときにのみ表示されます。

自動のデータベース変更を確認する

実行中のアプリを操作したとき、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 で任意のクエリメソッドを実行できます。

DAO ガター アクションのスクリーンショット
図 2. DAO クエリ ガター アクション

アプリに複数のデータベースが含まれている場合、Android Studio には、クエリを実行するデータベースをプルダウン リストから選択するよう求めるプロンプトが表示されます。クエリメソッドに名前付きバインド パラメータが含まれている場合、Android Studio では、クエリを実行する前に各パラメータの値がリクエストされます。クエリ結果が Inspector ウィンドウに表示されます。

カスタム SQL クエリを実行する

Database Inspector を使用して、アプリの実行中にアプリのデータベースに対してカスタム SQL クエリを実行することもできます。データベースにクエリを実行する手順は次のとおりです。

  1. [Databases] ペインの上部にある Open New Query tab をクリックし、Inspector ウィンドウに新しいタブを開きます。

    New Query タブのボタンを示すスクリーンショット。
    図 3. [New Query] タブを開く
  2. アプリに複数のデータベースが含まれている場合は、[New Query] タブの上部にあるプルダウン リストから、クエリを実行するデータベースを選択します。

  3. [New Query] タブの上部にあるテキスト フィールドにカスタム SQL クエリを入力し、[Run] をクリックします。

[New Query] タブに表示されるクエリ結果は読み取り専用であり、変更できません。ただし、カスタム SQL クエリ フィールドを使用して、UPDATEINSERTDELETE などの修飾子ステートメントを実行することは可能です。アプリで Room を使用し、UI で(LiveDataFlow などによって)データベースを監視している場合、データに加えた変更は実行中のアプリですぐに表示されます。それ以外の場合、変更内容は、変更したデータをアプリで次にデータベースから読み取るときにのみ表示されます。

データベース接続を開いたままにする

Database Inspector は、アプリがデータベースへのライブ接続を維持しているときにしか、データベースとやり取りできません。つまり、アプリがデータベースへの接続と切断を頻繁に行う場合、データベースの検査が難しくなることがあります。[Databases] ペインはアイコンを使用して、開いている()データベースと閉じているデータベース()を区別します。

また、[Databases] ペインの上部で Keep database connections open をオフ()からオン()に切り替えることで、データベース接続が閉じないようにできます。

参考情報

Database Inspector の詳細については、以下の参考情報をご覧ください。

ブログ投稿

動画