O Database Inspector no Android Studio é uma ferramenta integrada para visualizar e depurar bancos de dados SQLite de um aplicativo móvel em tempo real. De acordo com a documentação oficial do Android Developers (2025), a ferramenta permite executar consultas SQL no banco ativo, visualizar a estrutura das tabelas e editar registros sem parar o aplicativo. A ferramenta suporta Room, SQLiteOpenHelper e qualquer banco de dados interno, detectando-os automaticamente ao iniciar a criação de perfil.
Pontos principais
Database Inspector é uma ferramenta do Android Studio para inspecionar e depurar bancos de dados locais em um aplicativo móvel. Permite visualizar todos os bancos de dados SQLite criados pelo aplicativo, incluindo bancos Room, SQLiteOpenHelper e bibliotecas de terceiros. A ferramenta está disponível a partir do Android Studio 4.1 e pode ser iniciada via Android Profiler ou diretamente do menu View.
O principal propósito do Database Inspector é a visualização de dados durante o desenvolvimento. Em vez de enviar o conteúdo do banco para um log ou escrever uma tela separada para visualizar dados, o desenvolvedor pode abrir o Database Inspector e ver imediatamente todas as tabelas, seus esquemas e conteúdos. A ferramenta suporta tanto bancos de dados SQLite relacionais quanto Room com Auto-migrações.
A ferramenta é indispensável em cenários quando você precisa verificar a exatidão do armazenamento de dados após realizar uma operação: registro de usuário, sincronização com servidor, cache de listas. Em vez de escrever uma interface de teste, o dump do banco de dados é visualizado através do Database Inspector. A ferramenta também é ativamente usada para depurar migrações Room — você pode ver o esquema real das tabelas após cada atualização de esquema.
O Database Inspector conecta-se ao processo do aplicativo Android através do Android Profiler Service. Ele detecta todas as conexões SQLite abertas no aplicativo e as exibe no painel lateral. É necessária uma compilação Debug do aplicativo com API Level 26 (Android 8.0) ou superior.
Ao ser iniciado, o Database Inspector cria um túnel ADB entre o aplicativo no dispositivo e o IDE no computador. Os arquivos de banco de dados SQLite WAL (Write-Ahead Logging) são transmitidos através deste túnel para exibir o conteúdo. Comandos SQL são enviados diretamente ao mecanismo SQLite do aplicativo através do suporte do Database Inspector no Room e SQLiteDatabase. A ferramenta detecta automaticamente quando o aplicativo abre um banco de dados e o adiciona à lista inspecionada.
Para o Database Inspector funcionar corretamente, você precisa de: Android Studio 4.1+, um dispositivo ou emulador com API Level 26+, e uma compilação Debug do aplicativo. Para Room, a biblioteca room-runtime versão 2.2+ é adicionalmente necessária. Se o banco de dados for criado com modo WAL, que é padrão para Room 2.2+, a ferramenta pode ler dados sem bloquear o aplicativo principal.
// Exemplo de banco de dados Room suportado pelo Database Inspector
@Database(
entities = [User::class, Order::class],
version = 2,
autoMigrations = [AutoMigration(from = 1, to = 2)]
)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
abstract fun orderDao(): OrderDao
}
O Database Inspector fornece um conjunto completo de funções para trabalhar com dados locais: desde a visualização do esquema de tabelas até a execução de consultas SQL complexas e edição de registros.
O painel esquerdo exibe todos os bancos de dados e tabelas. Quando uma tabela é selecionada, seu conteúdo é exibido em uma grade com colunas: todos os campos do registro são mostrados como colunas, cada linha é um registro separado. O esquema da tabela (nome, tipo, restrições) é exibido na parte superior. Para chaves estrangeiras, as relações entre tabelas são mostradas.
| Tipo de dado | Tipo SQLite | Tipo Room | Exemplo |
|---|---|---|---|
| Inteiro | INTEGER | Int, Long | 42 |
| String | TEXT | String | "John" |
| Número decimal | REAL | Double, Float | 3.14 |
| Dados binários | BLOB | ByteArray | [0x00, 0x01] |
| Data/Hora | INTEGER (Unix epoch) | Long, Date | 1720000000 |
A aba Query permite executar comandos SQL arbitrários diretamente no banco de dados selecionado. SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN e qualquer outro operador SQLite são suportados. Os resultados são exibidos em formato tabular abaixo do editor de consultas. O histórico de consultas é preservado durante a sessão.
As células da tabela podem ser editadas diretamente — basta clicar em um valor e inserir um novo. As alterações são aplicadas imediatamente ao aplicativo em execução. Isso é especialmente útil para testar casos extremos: definir null em um campo obrigatório, substituir um ID por um inexistente, verificar o tratamento de strings longas. Todas as alterações são confirmadas em tempo real.
O Database Inspector tem uma integração profunda com Room, tornando-o indispensável ao desenvolver aplicativos com esta biblioteca. Além da funcionalidade padrão, o inspetor fornece capacidades específicas do Room.
Para bancos de dados Room, o Database Inspector mostra as consultas SQL geradas para cada método DAO. Isso permite verificar se o Room gera SQL correto, especialmente para consultas complexas com JOIN, @Relation e @Transaction. Se o Room executar uma consulta ineficiente (por exemplo, consultas N+1 em vez de um único JOIN), isso é imediatamente visível no log de consultas do Database Inspector.
Ao atualizar o esquema Room com AutoMigration ou migrações manuais, o Database Inspector mostra a estrutura real das tabelas após a migração. Basta abrir o inspetor após iniciar o aplicativo e verificar se todas as colunas, índices e chaves estrangeiras foram criados corretamente. Se uma migração falhou com erro, o banco de dados não abrirá — a ferramenta mostrará a última versão disponível.
Room permite combinar dados de várias tabelas através de @Relation e @Embedded. O Database Inspector ajuda a verificar visualmente a exatidão das relações exibindo dados de tabelas relacionadas lado a lado. Para cada chave estrangeira, você pode navegar para a tabela relacionada com um clique.
// Entidade com Relation para verificação via Database Inspector
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String
)
data class UserWithOrders(
@Embedded val user: User,
@Relation(parentColumn = "id", entityColumn = "user_id")
val orders: List<Order>
)
O Database Inspector resolve tarefas de desenvolvimento específicas que surgem ao trabalhar com armazenamento local de dados. Vejamos os casos de uso mais comuns da ferramenta no trabalho diário.
Muitas vezes, um aplicativo armazena em cache as respostas da API em um banco de dados local. O Database Inspector permite verificar a exatidão do cache: após a sincronização, você pode ver os registros reais na tabela de cache. Se os dados não aparecerem — o problema está no código de salvamento. Se aparecerem duplicatas — o problema está na lógica de upsert.
Quando um método DAO não salva dados, mas não lança uma exceção, o Database Inspector mostra o estado real da tabela. Causas típicas: conflito de Primary Key (configuração OnConflictStrategy), tipo de dado incorreto em uma coluna, violação de restrição NOT NULL ou violação de Foreign Key. O inspetor permite ver o changeset do banco de dados antes e depois da operação. Comparar instantâneos de dados antes e depois de uma chamada DAO é uma das formas mais eficazes de depurar erros transacionais e verificar a exatidão da lógica de negócios do aplicativo durante operações de escrita complexas.
Ao alterar o esquema das tabelas — adicionar colunas, renomear campos, dividir tabelas — o Database Inspector ajuda a verificar o resultado da migração. Basta iniciar o aplicativo com a nova versão do banco de dados e verificar se todos os dados foram transferidos corretamente para a nova estrutura. Se os dados estiverem faltando após a migração, você pode restaurá-los a partir de um dump salvo antes da refatoração. Este cenário é especialmente relevante ao migrar de SQLiteOpenHelper para Room ou ao alterar a estrutura de tabelas existentes em uma nova versão do aplicativo.
O Database Inspector também pode ser usado para avaliar o desempenho de consultas SQL. Executando SELECT através da aba Query e medindo o tempo de resposta, você pode identificar consultas que carecem de índices. Room registra automaticamente consultas lentas no Logcat com a tag SLOW SQL, e o Database Inspector permite executar imediatamente EXPLAIN QUERY PLAN para análise do plano de execução.
Perguntas frequentes
Certifique-se de que o aplicativo está sendo executado em modo Debug e que o API Level do dispositivo é 26 ou superior. Se o banco de dados for criado em um processo separado ou usar SQLCipher (criptografia), o Database Inspector pode não detectá-lo. Para SQLCipher, use um banco de dados auxiliar de depuração sem criptografia.
Sim, a edição de dados é possível diretamente nas células da tabela. Um clique duplo em um valor permite alterá-lo. As alterações são imediatamente aplicadas ao banco de dados do aplicativo em execução. Para adicionar novos registros, use a consulta SQL INSERT através da aba Query.
Não, o Database Inspector não suporta Realm porque Realm não usa SQLite. Para depurar Realm, use Realm Object Server, Realm Studio ou registro no aplicativo. Para MongoDB Realm SDK, a ferramenta Realm Studio está disponível para macOS, Windows e Linux.
O Database Inspector permite exportar o banco de dados inteiro. Clique com o botão direito no nome do banco na lista e selecione Export Database. O arquivo .db será salvo no seu computador. Para visualizá-lo, use qualquer navegador SQLite, como DB Browser for SQLite.
De acordo com o Google, a sobrecarga é mínima — o Database Inspector lê arquivos WAL do banco de dados sem bloquear gravações. A execução de consultas SQL personalizadas pode carregar temporariamente o banco de dados, mas isso é controlado pelo desenvolvedor. A ferramenta é desabilitada automaticamente para compilações de produção.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também