Database Inspector로 데이터베이스 디버그

Database Inspector를 사용하면 앱 실행 중에 앱의 데이터베이스를 검사하고 쿼리 및 수정할 수 있습니다. 이 방법은 데이터베이스 디버깅에 특히 유용합니다. Database Inspector는 SQLite를 기반으로 빌드된 라이브러리(예: Room) 및 일반 SQLite를 사용한 작업을 지원합니다.

Database Inspector 열기

Database Inspector에서 데이터베이스를 열려면 다음 단계를 따르세요.

  1. API 수준 26 이상을 실행하는 에뮬레이터 또는 연결된 기기에서 앱을 실행합니다.

  2. 메뉴 바에서 View > Tool Windows > App Inspection을 선택합니다.

  3. Database Inspector 탭을 선택합니다.

  4. 실행 중인 앱 프로세스를 메뉴에서 선택합니다.

  5. 현재 실행 중인 앱의 데이터베이스가 Databases 창에 나타납니다. 검사하려는 데이터베이스의 노드를 확장합니다.

데이터 보기 및 수정

Databases 창에 앱의 데이터베이스 목록과 각 데이터베이스에 포함된 테이블이 표시됩니다. 그림 1과 같이 테이블 이름을 더블클릭하면 검사기 창 오른쪽에 데이터가 표시됩니다. 열 헤더를 클릭하면 검사기 창의 데이터가 해당 열을 기준으로 정렬됩니다.

Database Inspector 창 스크린샷
그림 1. Database Inspector 창

테이블의 데이터를 수정하려면 다음 단계를 따르세요.

  1. 셀을 더블클릭합니다.
  2. 새 값을 입력합니다.
  3. Enter를 누릅니다.

앱에서 Room을 사용하고 UI가 데이터베이스를 관찰(예: LiveData 또는 Flow 사용)하는 경우 데이터의 변경사항이 실행 중인 앱에 즉시 표시됩니다. 그 외 경우에는 앱이 다음에 데이터베이스에서 수정된 데이터를 읽을 때만 변경사항이 표시됩니다.

실시간 데이터베이스 변경사항 확인

실행 중인 앱과 상호작용할 때 Database Inspector에서 제공하는 데이터가 자동으로 업데이트되도록 하려면 검사기 창 상단의 Live updates 체크박스를 선택하세요. 실시간 업데이트가 사용 설정된 동안에는 검사기 창의 테이블이 읽기 전용이므로 값을 수정할 수 없습니다.

또는 데이터를 수동으로 업데이트하려면 검사기 창 상단에 있는 Refresh table 버튼을 클릭합니다.

데이터베이스 쿼리

Database Inspector는 앱이 실행되는 동안 앱의 데이터베이스에서 쿼리를 실행할 수 있습니다. 이 도구는 앱이 Room을 사용하는 경우 DAO 쿼리를 사용할 수 있지만 맞춤 SQL 쿼리도 지원합니다.

DAO 쿼리 실행

앱이 Room을 사용하는 경우 Android 스튜디오는 DAO 클래스에 이미 정의된 쿼리 메서드를 빠르게 실행할 수 있는 거터 작업을 제공합니다. 이 작업은 앱이 실행되는 동안 사용할 수 있으며 Database Inspector는 IDE에서 열립니다.

DAO에서 쿼리 메서드를 실행하려면 @Query 주석 옆에 있는 Run SQLite statement in Database Inspector 버튼을 클릭하세요.

DAO 거터 작업 스크린샷
그림 2. DAO 쿼리 거터 작업

앱에 데이터베이스가 두 개 이상 있는 경우 Android 스튜디오에서는 쿼리할 데이터베이스를 목록에서 선택하라는 메시지를 표시합니다. 쿼리 메서드에 명명된 결합 매개변수가 포함된 경우 Android 스튜디오는 쿼리를 실행하기 전에 각 매개변수의 값을 요청합니다. 쿼리 결과가 검사기 창에 표시됩니다.

맞춤 SQL 쿼리 실행

Database Inspector를 사용하여 앱이 실행되는 동안 앱의 데이터베이스에서 맞춤 SQL 쿼리를 실행할 수도 있습니다.

데이터베이스를 쿼리하려면 다음 단계를 따르세요.

  1. Databases 창 상단에 있는 Open New Query Tab 을 클릭하여 검사기 창에 새 탭을 엽니다.

    새 쿼리 탭 버튼을 보여주는 스크린샷
    그림 3. New Query 탭 열기
  2. 앱에 데이터베이스가 두 개 이상 있는 경우 New Query 탭의 목록에서 쿼리할 데이터베이스를 선택합니다.

  3. New Query 탭 상단에서 텍스트 필드에 맞춤 SQL 쿼리를 입력합니다.

  4. Run을 클릭합니다.

또는 쿼리 기록 기능을 사용하여 이전에 사용한 쿼리를 실행합니다.

  1. Show query history Show query history 버튼
버튼을 클릭하면 선택한 데이터베이스에 관해 이전에 실행한 쿼리 목록이 표시됩니다.

    쿼리 기록 드롭다운을 보여주는 스크린샷
    그림 4. 쿼리 기록 메뉴
  2. 목록에서 쿼리를 클릭하여 편집기에서 전체 쿼리 미리보기를 확인하고 Enter 키를 눌러 편집기에 복사합니다.

  3. Run을 클릭하여 문을 실행합니다.

New Query 탭에 표시되는 쿼리 결과는 읽기 전용이며 수정할 수 없습니다. 하지만 맞춤 SQL 쿼리 필드를 사용하여 UPDATE, INSERT, DELETE 같은 수정자 문을 실행할 수 있습니다.

앱에서 Room을 사용하고 UI가 데이터베이스를 관찰(예: LiveData 또는 Flow 사용)하는 경우 데이터의 변경사항이 실행 중인 앱에 즉시 표시됩니다. 그 외 경우에는 앱이 다음에 데이터베이스에서 수정된 데이터를 읽을 때만 변경사항이 표시됩니다.

오프라인 모드

Android 스튜디오 4.2 이상에서는 프로세스 연결이 해제된 후에도 앱의 데이터베이스를 계속 검사할 수 있습니다. 이를 통해 비정상 종료 후 앱을 디버그하기가 더 쉬워집니다.

연결이 해제되면 Database Inspector가 데이터베이스를 다운로드하여 오프라인 모드로 데이터베이스를 사용할 수 있게 만듭니다. 오프라인 상태에서 테이블을 열고 쿼리를 실행할 수 있습니다.

실시간 앱 프로세스에 다시 연결되면 Database Inspector는 오프라인 모드를 종료하고 기기에 있는 데이터만 표시합니다. 즉, 오프라인 모드에서 표시된 데이터는 앱 프로세스에 다시 연결될 때 유지되지 않습니다. 이러한 제한으로 인해 Database Inspector에서는 오프라인 모드에서 데이터를 수정하거나 수정 SQL 문을 실행할 수 없습니다.

오프라인 모드에서 데이터베이스를 볼 때 검사기가 더 이상 프로세스에 연결되어 있지 않으면 프로세스 이름에 [DETACHED]가 포함됩니다. 또한 데이터베이스 아이콘 데이터베이스
오프라인은 그림 5와 같이 오프라인 상태를 나타냅니다.

오프라인 모드의 Database Inspector
그림 5. 오프라인 모드의 Database Inspector

데이터베이스 연결 열어 두기

Database Inspector는 앱이 데이터베이스와 실시간 연결을 유지하는 동안에만 데이터베이스를 수정할 수 있습니다. 따라서 앱이 데이터베이스에 자주 연결 및 연결 해제되는 경우 데이터베이스를 검사하기 어려울 수 있습니다. Databases 창에서는 아이콘을 통해 열린 데이터베이스()와 닫힌 데이터베이스()가 식별됩니다.

또한 데이터베이스 연결이 닫히지 않도록 하려면 Databases 창 상단에서 Keep database connections open을 사용 중지 에서 사용 으로 전환합니다.

Database Inspector에서 데이터 내보내기

Database Inspector에서 데이터베이스, 테이블, 쿼리 결과를 내보내 로컬에서 저장, 공유 또는 재생성할 수 있습니다. Android 스튜디오에서 앱 프로젝트를 열고 Database Inspector에서 프로젝트의 앱을 검사하면 다음 방법 중 하나로 데이터 내보내기를 시작할 수 있습니다.

  • Databases 패널에서 데이터베이스나 테이블을 선택하고 패널 상단에 있는 Export to file을 클릭합니다.
  • Databases 패널에서 데이터베이스나 테이블을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 Export to file을 선택합니다.
  • 탭에서 테이블이나 쿼리 결과를 검사할 때 테이블이나 쿼리 결과 위쪽에서 Export to file을 클릭합니다.

내보내기 작업을 선택한 후에는 그림 6과 같이 Export Database 대화상자를 사용하여 최종 단계를 완료합니다.

데이터베이스, 테이블, 쿼리 결과 중 어느 것을 내보내려고 하는지에 따라 DB, SQL, CSV 중 한 가지 이상의 형식으로 데이터를 내보낼 수 있습니다.

Export Database 대화상자

그림 6. Export Database 대화상자

추가 리소스

Database Inspector에 관해 자세히 알아보려면 다음 추가 리소스를 참고하세요.

블로그 게시물

동영상