2
respostas

Distribuir app com dados pré-gravados no banco de dados

É possível gerar um apk com dados pré-gravados no banco de dados?

2 respostas

Olá Júnior, tudo bem?

É perfeitamente possível, você pode fazer alguns métodos de inserção no banco de dados no processo de build do aplicativo, assim quando ele inicia, já vem com todos os dados que você inseriou manualmente.

Um ponto de cuidado, você precisaria verificar se o banco de dados não possuí nenhum registro, garantindo que os dados não sejam duplicados, aqui uma possível solução para esse problema:

@Dao
public interface ProdutoDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void salva(Produto produto);

    @Query("SELECT * FROM Produto")
    List<Produto> buscaTodos();

    @Query("SELECT COUNT(*) FROM Produto")
    int contaProdutos();
}

Acima utilizei uma função para contar quantos produtos há no meu banco de dados, e logo abaixo faço uma verificação, caso não haja registros, adicionar esses produtos automaticamente.

private void inserirDadosIniciais() {
    if (produtoDao.contaProdutos() == 0) {
        Produto produto1 = new Produto("Produto 1", "Descrição do Produto 1", new BigDecimal("10.0"));
        Produto produto2 = new Produto("Produto 2", "Descrição do Produto 2", new BigDecimal("20.0"));
        produtoDao.salva(produto1);
        produtoDao.salva(produto2);
    }
}

Qualquer dúvida, estarei a disposição :)

O método inserirDadosIniciais() seria chamado sempre que o app inicia?