Banco de dados no Pocket PC com Windows Mobile 5.0

Por Renato Haddad, Microsoft Most Valuable Professional .NET Mobile Devices. Palestrante, autor de diversos livros e ministra treinamentos de imersão total sobre a tecnologia .NET no Brasil e Canadá.

Tecnologias Utilizadas

  • VS.NET 2005

  • Windows Mobile 5.0

O uso de banco de dados nos dispositivos móveis como Pocket PC ou Smartphone com Windows Mobile 5.0 está muito fácil de se implementar. Em versões anteriores, como a Windows Mobile 2003 Second Edition no Smartphone era impossível montar um GridView ou armazenar dados usando o SQL Mobile Edition (antigo SQL Server CE). O objetivo deste artigo é mostrar como criar uma fonte de dados com duas tabelas vinculadas e fazer um Master-Detail diretamente no Pocket PC.

Projeto

Abra o Visual Studio .NET 2005 e crie um novo projeto chamado MSDNMasterDetailWM5. Note que selecionei em Project types: Visual Basic / Smart Device / Windows Mobile 5.0 Pocket PC.

Dica: caso esta opção do Windows Mobile 5.0 Pocket PC não apareca na sua janela, é preciso fazer download e instalar o SDK disponível em www.microsoft.com/windowsmobile.

Cc518033.dbPocketPC_01(pt-br,MSDN.10).jpg
Figura 1 - Novo projeto

Clique no botão OK para criar o projeto. Iremos usar um banco de dados que é o Northwind.sdf como fonte de dados. Note que a extensão é SDF e você pode usar qualquer arquivo com esta extensão.

Selecione o menu Data / Show Data Sources e siga os seguintes passos para montar toda a fonte de dados com as devidas tabelas e campos.

Cc518033.dbPocketPC_02(pt-br,MSDN.10).jpg
Figura 2 - Janela de Data Source

Clique no link Add New Data Source para informar a origem da fonte, podendo ser um Database, um Web Service ou um Object.

Cc518033.dbPocketPC_03(pt-br,MSDN.10).jpg
Figura 3 - Fonte de dados

Selecione Database e clique em Next. É exibida a janela com as conexões atuais, e como precisamos de uma com o SQL Mobile Edition, clique no botão New Connection.

Cc518033.dbPocketPC_04(pt-br,MSDN.10).jpg
Figura 4 - Conexão de dados

Será exibida uma janela sugerindo, neste caso, o banco de dados do Access (Microsoft Access Database File (OLE DB). Mas, no nosso caso isto não se aplica, portanto, precisamos selecionar outro Provider. Para isso, clique no botão Change.

Cc518033.dbPocketPC_05(pt-br,MSDN.10).jpg
Figura 5 - Provider do Access

Selecione na lista o Provider Microsoft SQL Server Mobile Edition, o qual usa um provider específico para Mobile Edition. Clique no botão OK.

Cc518033.dbPocketPC_06(pt-br,MSDN.10).jpg
Figura 6 - Provider para Mobile Edition

Será aberta uma janela para você informar qual é o banco de dados. Clique no botão Browse.

Cc518033.dbPocketPC_07(pt-br,MSDN.10).jpg
Figura 7 - Conexão com o banco de dados

Selecione o banco de dados northwind.sdf, o qual vem instalado como exemplo no Visual Studio .NET 2005 no endereço C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0\Northwind.sdf. Em seguida, clique no botão Open.

Cc518033.dbPocketPC_08(pt-br,MSDN.10).jpg
Figura 8 - Northwind selecionado

Veja como que ficou a conexão montada.

Cc518033.dbPocketPC_09(pt-br,MSDN.10).jpg
Figura 9 - String de conexão

Clique no botão Next e será exibida uma importante mensagem informando que o banco de dados não está local e se você deseja fazer uma cópia local do Database. Clique em Yes e quando você fizer o deploy da aplicação, automaticamente o banco de dados é enviado para o dispositivo.

Cc518033.dbPocketPC_10(pt-br,MSDN.10).jpg
Figura 10 - Aviso de cópia local

Em seguida são exibidos todos os objetos do banco de dados. Como iremos trabalhar com tabelas, expanda o nó Tables e selecione os seguintes campos:

Tabela Categories: CategoryID e CategoryName
Tabela Products: ProductID, CategoryID, ProductName, UnitsInStock, UnitPrice

É muito importante você selecionar o CategoryID nas duas tabelas porque é justamente o campo chave de relacionamento entre as mesmas. Note ainda que é sugerido o nome do Dataset, sendo NorthwindDataSet. Caso queira alterar é só digitar o nome.

Cc518033.dbPocketPC_11(pt-br,MSDN.10).jpg
Figura 11 - Tabelas disponíveis

Clique no botão Finish para finalizar o assistente. Note que a janela Data Source exibe exatamente as tabelas e campos selecionados. Cabe ressaltar que a tabela de Products existe tanto separado quanto no vínculo com a tabela Categories, justamente porque selecionamos o campo de relacionamento CategoryID. Se não tivéssemos selecionado este campo, não haveria vínculo entre as mesmas.

Cc518033.dbPocketPC_12(pt-br,MSDN.10).jpg
Figura 12 - Janela de Data Source com as tabelas

O próximo passo é montar a interface, portanto, selecione a tabela Categories e arraste para dentro do formulário. Faça o mesmo com a tabela Products que está dentro do nó Categories. Note que foram criados automaticamente dois controles GridView.

Cc518033.dbPocketPC_13(pt-br,MSDN.10).jpg
Figura 13 - GridView sem formatação

Como você pode rodar esta aplicação em diversos dispositivos com capacidades de resolução diferentes, o Visual Studio .NET 2005 tem um recurso fantástico para ajustar o layout conforme a resolução. Selecione o primeiro GridView (Categorias), pressione F4 para exibir a janela de propriedades, localize a propriedade Dock e atribua TOP. Isso fará com que o controle fique no topo da página. Já com o segundo GridView atribua Bottom para alinhá-lo no rodapé.

Cc518033.dbPocketPC_14(pt-br,MSDN.10).jpg
Figura 14 - Propriedade Dock

Veja como ficou o layout após o alinhamento.

Cc518033.dbPocketPC_15(pt-br,MSDN.10).jpg
Figura 15 - Controles alinhados

Praticamente o projeto está pronto, mas é importante entender como que o Visual Studio .NET 2005 estabeleceu o vínculo entre as tabelas. Quando arrastamos as tabelas para o formulário, foram criados vários componentes, os quais estão listados abaixo do formulário, sendo: NorthwindDataSet (Dataset em si), CategoriesTableAdapter (é o Adapter da tabela Categories), o CategoriesBindingSource (é o componente que faz o Databind dos dados no controle), o ProductsTableAdapter (é o Adapter da tabela Products) e o Products_FK01BindindSource (é o componente para Databind já com os dados vinculados entre as duas tabelas). Ou seja, os componentes são criados automaticamente, você não precisa inserir nenhuma linha de código.

Cc518033.dbPocketPC_16(pt-br,MSDN.10).jpg
Figura 16 - Componentes de dados

Caso queira ver como que o vínculo foi estabelecido no código criado automaticamente, pressione F7 para exibir a janela de códigos e analise o mesmo.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If NorthwindDataSetUtil.DesignerUtil.IsRunTime Then
       Me.ProductsTableAdapter.Fill
      (Me.NorthwindDataSet.Products)
    End If
    If NorthwindDataSetUtil.DesignerUtil.IsRunTime Then
       Me.CategoriesTableAdapter.Fill 
      (Me.NorthwindDataSet.Categories)
    End If
End Sub

Retorne ao Designer (Shift + F7) e no menu da aplicação, crie uma opção chamada Sair para fechar a aplicação.

Cc518033.dbPocketPC_17(pt-br,MSDN.10).jpg
Figura 17 - Menu Sair da aplicação

Dê um duplo clique na opção Sair e digite o seguinte código para fechar a aplicação:

Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
    Application.Exit()
End Sub

Salve o projeto.

Cc518033.dbPocketPC_18(pt-br,MSDN.10).jpg
Figura 18 - Salvar o projeto

Execução

Para compilar o projeto, selecione o menu Build / BuildMasterDetailWM5. Para executar, pressione F5. Selecione o emulador Windows Mobile 5.0 Pocket PC Emulator. Caso você tenha o seu device conectado na máquina via USB e o Active Sync 4 ou superior rodando adequadamente, você pode selecionar Windows Mobile 5.0 Pocket PC Device para instalar o projeto direto no device.

Cc518033.dbPocketPC_19(pt-br,MSDN.10).jpg
Figura 19 - Emulador do Pocket PC

Clique em Deploy e aguarde o emulador carregar o programa. Na primeira vez o processo é mais lento porque são instaladas todas as DLLs necessárias para rodar a aplicação. Teste a aplicação, clique nas categorias e note que são exibidos os produtos da respectiva categoria.

Cc518033.dbPocketPC_20(pt-br,MSDN.10).jpg
Figura 20 - Execução no Pocket PC Emulator

Conclusão

Trabalhar com banco de dados no Windows Mobile 5.0 e SQL Mobile Edition é uma excelente opção de você adicionar valor as aplicações existentes, seja ASP.NET ou Desktop, permitindo aos usuários ter mais uma forma de manipular os dados.

Bons estudos e lembre-se: No Stress, think Windows Mobile 5.0 and SQL Mobile Edition.

Renato Haddad ( rehaddad@msn.com ) é MVP Mobile Devices, palestrante em diversos eventos de .NET no Brasil e no Canadá. Renato é autor de diversos livros e treinamentos em CD multimídia de ASP.NET (1.1 e 2.0), SQL Reporting Services, Visual Studio .NET 2003/2005 e Aplicações Móveis para celulares e Pocket PC, tanto no Brasil como em outros países da América Latina.

Mostrar: