Xamarin.Forms - Criando uma aplicação com acesso a dados (SQLite) para Android usando o VS 2015 e C# - I
No artigo de hoje vou mostrar como criar uma aplicação multiplataforma que pode ser usada no Windows Phone, Android e iOS, usando o Xamarin.Forms com acesso ao banco de dados SQLite usando o Visual Studio e a linguagem C#. |
O Xamarin é a plataforma que permite que você crie aplicações multiplataformas para dispositivos móveis incluindo o Android, iOS e o Windows Phone. E são aplicativos multiplataforma nativos onde você compartilha 75% do código entre as 3 plataformas e escreve o código para a interface de usuário para cada plataforma usando o código nativo específico.
O Xamarin.Forms, que roda na plataforma Xamarin, vai mais longe, ele permite criar aplicações multiplataformas que compartilha a interface do usuário com as 3 plataformas : Android, iOS e Windows Phone.
Nota: Para desenvolver a interface de usuário para uma plataforma específica podemos usar : Xamarin.Android, Xamarin.iOS, e Windows Phone SDK
Nosso objetivo será criar uma aplicação multiplataforma : para Android e iOS usando o Xamarin.Forms. (O desenvolvimento para Windows Phone eu abordo em outro artigo)
No caso da aplicação para iOS a utilização do Apple SDK, que responsável pelo build e pela depuração da aplicação, somente é possível através de um Mac em rede com a máquina Windows que utiliza o Visual Studio. (Podemos ter o Mac emulado em um VMWare mas tenho ouvido falar que o desempenho é sofrível, e, esse procedimento não é autorizado pela Apple).
Nota: Se você tem um Mac pode criar uma máquina virtual com Windows , instalar o Visual Studio, e ai você pode abrir os programas que rodam no Windows em janelas dentro do OS x.
Resumindo : Se você quiser gerar um aplicação para iOS, você tem que ter um Mac, caso contrário você só vai conseguir compilar para Android e Windows.
Então como eu não tenho um Mac (ainda) em meu ambiente neste artigo eu vou focar o desenvolvimento, build e testes para a aplicação Android usando o Visual Studio e a linguagem C#.
Requisitos necessários :
Criando a solução no Visual Studio 2015
Abra o Visual Studio Community 2015 e clique em New Project;
Selecione Visual C#, o template Cross Plataform e a seguir Blank App (Xamarin.Forms Portable);
Nota : A opção Portable (Portable Class Library - PCL ) - Inclui todo o código comum em uma biblioteca de vínculo dinâmico (DLL) que pode então ser referenciada a partir de outros projetos;
Informe o nome Cadastro e clique no botão OK;
Ao clicar no botão OK, será criada uma solução contendo 4 projetos:
Nota: Durante o processo de criação dos projetos, ao criar o projeto para o iOS será apresentada a janela : Xamarin Mac Agent Instructions , com instruções para identificar e localizar o Mac (a própria máquina ou em uma rede local)Se você não tiver um Mac (como eu) clique no botão OK e a seguir clique no botão Close. Com isso não poderemos compilar nem testar projetos iOS no Visual Studio.
Neste momento eu vou remover os projetos Windows Phone e iOS da solução ficando apenas com o projeto Cadastro.Android e o projeto compartilhado: Cadastro.
Definindo o banco de dados SQLite
Nossa aplicação será bem simples. Vamos criar um cadastro de Clientes onde iremos gerenciar informações de Nome e Email de Clientes.
Como desejamos persistir as informações vamos usar um banco de dados em nossa aplicação e esse banco de dados será o SQLite.
O banco de dados SQLite é open-source e foi adotado pela Apple e pelo Google em suas plataformas para dispositivos móveis estando disponível tanto para Android como para iOS.
Ele é pequeno, rápido e portável sendo constituído de um único arquivo o que torna o seu gerenciamento muito simples em um ambiente para dispositivos móveis.
Para poder usar o SQLite no Android e no iOS vamos ter que determinar a correta localização do banco de dados e aqui teremos que usar um código específico para Android e para iOS, pois cada plataforma trata de forma diferente a estrutura de pastas da aplicação.
Para o Android vamos obter o caminho do banco de dados
System.
Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);Para o iOS o código que seria usado é :
_plataforma =
new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();Para criar o banco de dados usamos o código a seguir onde temos que obter a plataforma e o caminho do arquivo :
conexaoSQLite =
new SQLiteConnection(config.Plataforma, Path.Combine(config.DiretorioSQLite, "Cadastro.db3"));Referenciando o SQLite nos projetos
Para poder usar o SQLite em nossa solução vamos incluir uma referência à biblioteca SQLite.Net PCL em nosso projeto usando o Nuget.
O pacote SQLite.NET é um ORM - Object Relational Mapping - muito básico que permite facilmente armazenar e recuperar objetos do banco de dados SQLite nos dispositivos Android e iOS.
No menu Tools clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution;
Localize o pacote SQLite.NET-PCL e instale-o nos dois projetos da solução:
Pronto ! com isso já podemos usar o SQLite e fazer o mapeamento para o nosso modelo de domínio que iremos criar a seguir.
Definindo o modelo de domínio da aplicação
Vamos agora definir o nosso modelo de domínio que será uma simples classe anêmica chamada Cliente.
Selecione o projeto compartilhado - Cadastro - e no menu Tools clique em Add Class;
Informe o nome Cliente.cs e inclua o código abaixo neste arquivo:
using System; using SQLite.Net.Attributes; namespace Cadastro { public class Cliente { [PrimaryKey, AutoIncrement] public int Id { get; set; } [MaxLength(50)] public string Nome { get; set; } [MaxLength(100)] public string Email { get; set; } public override string ToString() { return string.Format("{0} {1}", Nome, Email); } } } |
Neste código definimos as seguintes propriedades :
E sobrescrevemos o método ToString() para obter o nome e email dos clientes como uma string.
Definindo a interface para obter a plataforma e o caminho do banco de dados
Neste momento vamos criar no projeto compartilhado a interface IConfig onde vamos declarar duas propriedades :
Selecione o projeto compartilhado - Cadastro - e no menu Tools clique em Add New Item;
Selecione o template Interface e informe o nome IConfig e inclua o código abaixo neste arquivo:
using SQLite.Net.Interop; namespace Cadastro { public interface IConfig { string DiretorioSQLite { get; } ISQLitePlatform Plataforma { get; } } } |
Definimos assim o contrato da nossa interface que deverá ser implementado pelas classes concretas que usarem esta interface.
Implementando a interface IConfig no projeto Android
Agora vamos selecionar o projeto Cadastro.Droid e criar neste projeto a classe Config que implementa a interface IConfig e que retorna a plataforma usada e o caminho do banco de dados.
Selecione o projeto Android - Cadastro.Droid - e no menu Tools clique em Add Class;
Informe o nome Config.cs e inclua o código abaixo neste arquivo:
using System; using SQLite.Net.Interop; using Xamarin.Forms; [assembly: Dependency(typeof(Cadastro.Droid.Config))] namespace Cadastro.Droid { public class Config : IConfig { private string _diretorioSQLite; private SQLite.Net.Interop.ISQLitePlatform _plataforma; public string DiretorioSQLite { get { if (string.IsNullOrEmpty(_diretorioSQLite)) { _diretorioSQLite = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); } return _diretorioSQLite; } } public ISQLitePlatform Plataforma { get { if (_plataforma == null) { _plataforma = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid(); } return _plataforma; } } } } |
Assim implementamos a interface na classe Config no projeto Android.
Na segunda parte do artigo vamos definir a nossa camada de acesso a dados.
Tornou, pois, Jesus a dizer-lhes: Em verdade, em verdade vos digo que eu sou a
porta das ovelhas.
Todos quantos vieram antes de mim são ladrões e salteadores; mas as ovelhas não
os ouviram.
Eu sou a porta; se alguém entrar por mim, salvar-se-á, e entrará, e sairá, e
achará pastagens.
João 10:7-9
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Xamarim Studio - Desenvolvimento Multiplataforma com C# (Android, iOS e Windows)
Xamarim - Criando Apps com o Visual Studio e C# (vídeo aula)