Introdução

Convergência e Mobilidade. Aí estão duas palavras que vem se tornando o foco do mercado de tecnologia no Brasil e no mundo. Basta ver os números. Segundo o IDC(IDC's Enterprise Mobility & Convergence São Paulo) 70% de um universo de 90 empresas pretendem contratar uma integradora de soluções móveis em 2008. O presidente da Acel (Associação Nacional das Operadoras de Celular), Ércio Zilli, recentemente disse que, no próximo ano, o crescimento da telefonia móvel deverá ser entre 10% e 12%. Estamos realmente entrando na quinta era da computação, onde, os antes poderosos e solitários desktops, começam a se integrar, formando complexas e robustas estruturas de informação distribuída com pontos móveis.

As pessoas, hoje, perdem pouco a pouco a idéia do “computador de mesa”, ao passo que as sociedades virtuais juntamente com a grande enciclopédia INTERNET, começam a se tornar uma realidade estabelecida. E para a integração dos indivíduos e seus respectivos personagens neste novo mundo rpgístico, é necessário que os aparelhos móveis sejam utilizados. Fator como este, transforma o mercado de desenvolvimento em um grande funil que converge para o projeto de software móvel. Como no início da história da engenharia da computação, é cobrado agora do desenvolvedor de sistemas o skill criatividade. Pouco espaço, pouca memória, muita objetividade, muita versatilidade.

Neste contexto, o presente artigo apresenta um tutorial que ensina passo-a-passo, como construir um framework para acesso a dados na versão compacta e móvel do Microsoft SQL Server. O SQL Server Compact Edition é um SGBD suportado pelos sistemas operacionais da linha Windows Mobile. Este banco de dados oferece muitos recursos, do ponto de vista de ser móvel. Permite a criação e manipulação de dados em bases através de uma simples interface. Nele, podem-se criar tabelas, inserir registros, inserir colunas, definir chaves primárias, auto-incremento, transações e campos dos mais variados tipos, incluindo imagens e binários. Suporta consultas do tipo SQL e dispõe de até dois gigabytes de espaço para armazenamento. Vamos acompanhar nas próximas seções como implementar esse sistema em nossos projetos e como utiliza-lo através de uma camada de acesso.

Uma camada para acesso a dados

Nosso framework de acesso vai trabalhar numa camada separada do projeto (Figura 1). Vamos definir toda a lógica que corresponde a manipulação de dados dentro de uma classe separada. No final do projeto, essa classe vai ser compilada e um arquivo de extensão DLL será gerado. Este arquivo pode ser reutilizado sempre que necessário em outros projetos. A classe, por sua vez, pode ser expandida, suportando um maior número de bancos de dados. Empregaremos assim, os alicerces de encapsulamento e abstração que a Programação Orientada a Objetos dispõe.

Camadas 
 envolvidas no projeto

Figura 1 - Camadas envolvidas no projeto

Nesta classe serão definidos métodos que acessam o banco de dados para retornar informações ou modifica-las. Criaremos ainda alguns métodos mais específicos como os que criam base de dados em tempo de execução e os que trabalham com transações. Bem, então vamos por a mão na massa...

Iniciando o projeto

Para a construção do nosso projeto utilizaremos o Visual Studio 2005 e a linguagem VB.NET 2005 num projeto de Windows Mobile 5.0 Pocket PC Application. Para isso, abra o VS2005, vá ao menu File>New Project. Quando a janela New Project for apresentada, escolha na árvore de projetos a opção Visual Basic Projects>Smart Device>Windows Mobile 5.0 Pocket PC. Em seguida nos tipos de projeto apresentados selecione Device Application e dê o nome de AcessoDados. Clique em OK para confirmar.

Nota: O Windows Mobile 5.0 Pocket PC é um SDK de desenvolvimento que não vem por padrão na instalação do Visual Studio 2005, para baixá-lo acesse microsoft.com/download. Esse artigo pode ser desenvolvido normalmente em qualquer outro tipo de projeto móvel sem prejuízos.

Feito isso, abra a janela Solution Explorer e clique com o botão direito do mouse sobre o nome do projeto, vá agora ao menu Add>New Item. Na janela que será apresentada, escolha a opção Class Diagram. Dê ao arquivo o nome de dgAcessoDados.cd. Esse arquivo especifica um diagrama de classes, que pode ser construído visualmente. Ou seja, utilizaremos o Visual Studio como ferramenta CASE, elaborando o projeto do framework inicialmente através de um diagrama. Na seqüência o Visual Studio criará automaticamente a classe, seus métodos e propriedades e adicionará a mesma ao nosso projeto.

Assim que o arquivo de diagrama for adicionado ele será automaticamente aberto. No centro da tela, aparecerá a opção de visualizar a janela ToolBox. Clicando sobre essa opção, vemos que vários componentes são dispostos. Estes componentes podem ser utilizados para construir dos mais simples aos mais complexos diagramas de classes, dentre estes temos:

  • Class: Corresponde a uma classe. Nesta poderemos, visualmente, adicionar métodos, campos e propriedades.
  • Enum: Define um tipo enumerado para ser utilizado no restante do projeto.
  • Interface: De modo visual pode-se criar um molde para as classes que herdarem deste componente.
  • Abstract Class: Com este componente, que na prática não pode ser instanciado, pode-se definir métodos, campos e propriedades que sempre serão herdados em classes filhas.
  • Module: Cria um arquivo modular similar ao disponível no antigo Visual Basic 6. Usualmente utilizado para declarar classes e métodos públicos.
  • Inheritance: Com este componente em forma de seta selecionado clique sobre uma classe a ser definida com pai, e sequentemente, na classe a ser definida como filha. Feito isso, um relacionamento de herança entre elas será criado automaticamente.
Componente Class

Figura 2 - Componente Class

Continuando nosso projeto, arraste para a tela, um componente Class que se encontra na aba Class Designer (Figura 2). Quando fizer isso, uma janela aparecerá para que você indique algumas informações sobre a classe. Configure esta janela como na Figura 3 e clique em OK.

Janela 
 New Class

Figura 3 - Janela New Class

Executado esse procedimento, um diagrama representando uma classe será automaticamente adicionado na tela. É neste diagrama que vamos adicionar os métodos que constituirão nosso framework. Abra a janela Solution Explorer e repare que o arquivo de classe já foi criado, verificando o seu conteúdo podemos perceber que toda a estrutura de código também já foi adicionada pelo Visual Studio, no entanto, por enquanto não precisamos nos preocupar com o código, ou com quais bibliotecas iremos utilizar, estamos na fase de projeto.

Métodos de Conexão

Nossa camada de acesso vai interagir com o SQL Server Compact Edition de diversas formas. Precisaremos selecionar, apagar, inserir e alterar informações. Assim, com base nos objetos do ADO.NET 2.0 vamos definir os métodos a serem disponibilizados pela classe. Criaremos então o arquivo de classe passo-a-passo, iniciando com os métodos a seguir:

  • AbreConexao(): Método que conecta ao banco de dados móvel.
  • FechaConexao(): Método que desconecta a aplicação do banco de dados.
  • CriaBD(nomeBD As String): Cria um banco de dados num path desejado.

Para adicionar um método no visual da classe, selecione o diagrama, clique com o botão direito sobre ele e vá ao menu Add>Method(). Quando o método for adicionado, defina o nome dele como AbreConexao e pressione ENTER. Repita esse passo, para os métodos FechaConexao e CriaBD. Vá ao código da classe e repare que os métodos já foram criados automaticamente.

Para que seja possível utilizar o banco de dados SQL Server Compact Edition, precisa-se adicionar uma referência a sua biblioteca. Para isso, clique com o botão direito sobre o nome do seu projeto na Solution Explorer, e vá ao menu Add Reference. Na aba .NET, encontre e selecione o namespace System.Data.SqlServerCe (Figura 4). Feito isso, clique em OK.

Adicionando referência ao SQL Server CE

Figura 4 - Adicionando referência ao SQL Server CE

No código gerado não existe um namespace definido para esta classe, nem a importação das bibliotecas necessárias ao projeto, visto isso, modifique o código da biblioteca para que ele fique como o da Listagem 1.

Listagem 1 - Namespaces utilizados