Fonte: http://arteksoftware.com/deploying-a-database-file-with-a-xamarin-forms-app/

23 de fevereiro de 2015 em xamarin-forms

Tradução: salomaosilva, Azuris. Desenvolvedor Xamarin Azuris

 

É muito comum que um aplicativo móvel utilize um banco de dados sqlite local. A combinação de Sqlite.net e Xamarin.Forms torna isso muito fácil. Uma das razões pela qual nós escolhemos Sqlite como nosso banco de dados móvel é que é um único arquivo e funciona facilmente na Cross Platform.  O mesmo arquivo pode ser criado e aberto no iOS, Android, Windows, Mac, Windows Phone e WinRT.

Às vezes, podemos querer criar nosso banco de dados a partir do zero na primeira vez que nossa aplicação é executada. O Sqlite.net criará automaticamente o arquivo se ele não existir na primeira vez que tentarmos se conectar a ele. Podemos então usar o método CreateTable <TModel> () na classe SQLiteConnection para criar nossas tabelas a partir de nossos modelos C #.

Outras vezes, porém, vamos querer enviar um banco de dados pré populado com o aplicativo. Podemos ter algumas tabelas de pesquisa que precisam ter registros neles, ou dados padrão que o aplicativo precisa para funcionar. Felizmente, isso é fácil de realizar também.

Exemplo de código disponível em my Github repo

Os passos

  • crie o arquivo de banco de dados
  • vincule o arquivo de banco de dados a cada projeto específico da plataforma
  • copie o arquivo de banco de dados do pacote de aplicativos para um local gravável no sistema de arquivos
  • abra o arquivo de banco de dados para leitura e escrita

Copie o banco de dados SQlite

Podemos criar um arquivo de banco de dados Sqlite usando uma variedade de ferramentas no Mac e no Windows. Eu uso DB Browser para SQLite, uma ferramenta de plataforma cruzada que nos permitirá criar o banco de dados, definir o esquema e adicionar registros ao banco de dados. Para este exemplo, estaremos criando um arquivo chamado “people.db3“.

Crie o modelo

Ao usar o Sqlite.net, é importante que os modelos C # correspondam às definições da tabela. Se houver uma discrepância entre o modelo e a tabela, teremos resultados inesperados. Podemos acidentalmente criar novas tabelas, novas colunas em tabelas existentes ou não obter resultados de consultas.

Vincular o arquivo de database

Depois de criar o banco de dados em nosso desktop, precisamos incluí-lo em cada projeto da plataforma específica (iOS / Android / WP8). Podemos manter o arquivo em qualquer lugar no sistema de arquivos da área de trabalho, embora seja recomendado incluí-lo em nossa solução de controle de origem. Vamos usar o File Linking para incluir exatamente o mesmo arquivo em cada projeto.

iOS

Para o iOS, vamos vincular o arquivo db3 na pasta Recursos. Certifique-se de definir a ação de compilação para BundleResource.

Android

No Android, vamos vincular o arquivo db3 na pasta de ativos e definir a ação de construção para AndroidAsset.

Windows phone 8

Windows Phone irá vincular o arquivo de banco de dados na raiz do projeto e definir a ação de criação como conteúdo.

Copie o arquivo do banco de dados

Embora agora tenhamos incluído o arquivo de banco de dados com nosso aplicativo e ele fará parte do pacote que será instalado no dispositivo do usuário, o pacote de aplicativos e seus arquivos incluídos serão somente de leitura. Para realmente alterar o esquema do banco de dados ou adicionar novos registros, precisamos copiar o arquivo para um local gravável. Cada dispositivo contém uma pasta especial para cada aplicativo, conhecida como app sandbox (caixa de proteção de aplicativos), para armazenar arquivos. Usaremos APIs de arquivo de cada plataforma para copiar o arquivo do pacote (bundle) de aplicativos para a app sandbox(caixa de proteção de aplicativos).

iOS

Android

Windows phone 8

Rodando o app

Ao incluir nosso banco de dados predefinido com o nosso aplicativo, temos a capacidade de oferecer aos nossos usuários uma melhor experiência de primeira execução e minimizar a quantidade de trabalho que o aplicativo precisa fazer para poder ser executado pela primeira vez.

Código fonte

Você pode encontrar o modelo completo em my Github repo

Rob Gibbens

Leia mais postes mais publicações deste autor.