Clique aqui para instalar o Silverlight*
BrasilAlterar|Todos os sites da Microsoft
MSDN
|Developer Centers|Biblioteca|Downloads|Assinaturas MSDN
Pesquisa rápida


Acessando o SQL Server direto do Pocket PC

Por Renato Haddad, Microsoft Most Valuable Professional .NET Compact Framework. Autor de diversos livros e ministra palestras e treinamentos sobre a tecnologia .NET.

Tecnologias Utilizadas:

.NET Compact Framework

O Pocket PC têm ganho um mercado rapidamente em diversas empresas onde o uso de mobilidade se torna imprescindível. Esta tendência tem se demonstrado uma grande oportunidade para agregar valor as soluções desktop existentes e vender a aplicação com um diferencial de mercado, onde as informações estarão na palma da mão a qualquer hora.

O propósito deste artigo é mostrar como acessar um banco de dados SQL Server diretamente do Pocket PC. Para isto, é necessário que haja uma conexão com a rede, seja Wi-Fi ou através do ActiveSync. Como as redes Wi-Fi estão crescendo em todo lugar, acredito que daqui há alguns anos teremos acesso a qualquer lugar e hora em todo lugar do planeta terra. Com isso, é possível vc desenvolver uma aplicação para força de vendas onde os vendedores estarão apenas com um Pocket PC conectado via Wi-Fi diretamente no servidor da empresa.

O bando de dados que usarei neste artigo é o Northwind do SQL Server. Abra o Visual Studio .NET 2003 e crie um projeto com as seguintes características:

Project Types: Visual Basic Projects

Templates: Smart Device Application

Name: PocketPC

Location: C:\MSDN\PocketPC

Clique no botão OK e note que é exibida a janela para você selecionar o tipo de aplicação:

Clique no botão OK. No Solution Explorer, adicione um novo Windows Form chamado AccessSQLServer.

Crie uma UI com dois Buttons (btnProdutos e btnClientes), um DataGrid (gridDados) um Label (text: IP) e um TextBox (IP). Altere a propriedade do formulário MinimizeBox = true.

Como iremos acessar o SQL Server, adicione uma referência à classe System.Data.SqlClient. Para se trabalhar com DataAdapter é preciso referenciar a classe System.Data.Common.

Pressione F7 para digitar o código. Na primeira linha digite a referência a classe:

Imports System.Data.SqlClient

Veja os códigos dos respectivos botões. Note que é invocada a rotina GetData passando como argumento a instrução SQL definida.

Private Sub btnProdutos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles btnProdutos.Click
  Try
     Dim sql As String = "Select ProductName, UnitsInStock, UnitPrice FROM Products"
     GetData(sql)
  Catch ex As Exception
     MessageBox.Show(ex.Message)
  End Try
End Sub

Private Sub btnClientes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles btnClientes.Click
  Try
     Dim sql As String = "Select * FROM Customers"
     GetData(sql)
  Catch ex As Exception
     MessageBox.Show(ex.Message)
  End Try
End Sub

Digite a rotine GetData, que recebe a instrução sql como argumento.

Private Sub GetData(ByVal sql As String)
  Dim conexao As String = "Database=Northwind;user id=sa;Data Source=" + IP.Text
  Dim conn As New SqlConnection(conexao)
  Dim adapter As New SqlDataAdapter(sql, conn)
  Dim ds As New DataSet
  conn.Open()
  adapter.Fill(ds, "tabela")
  Try
     gridDados.DataSource = Nothing
     gridDados.DataSource = ds.Tables(0)
     MessageBox.Show("Existem: " + ds.Tables(0).Rows.Count.ToString + " registros")
  Catch ex As SqlException
      Throw
  Catch ex As Exception
      Throw
  Finally
      conn.Close()
  End Try
End Sub

Veja a explicação de cada linha:

Define a rotina
Private Sub GetData(ByVal sql As String)

Define a variável conexao do tipo string o qual contém toda a string de conexão com o banco de dados 
Northwind. O Data Source é o número IP da máquina a ser acessada, que neste caso é o número capturado
 da UI (TextBox = IP).
  Dim conexao As String = "Database=Northwind;user id=sa;Data Source=" + IP.Text

Define a string de conexão
  Dim conn As New SqlConnection(conexao)

Define o DataAdapter das respectivas variáveis sql e conn.
  Dim adapter As New SqlDataAdapter(sql, conn)

Define o DataSet que conterá a tabela a ser montada na memória com todos os dados oriundos 
da instrução SQL.
  Dim ds As New DataSet

Abre a conexão e executa o DataAdapter. Aqui o DataSet recebe a DataTable “tabela” 
na memória.
  conn.Open()
  adapter.Fill(ds, "tabela")

Inicia a rotina de tratamento de erro
  Try

Configura o DataGrid gridDados que irá exibir o conteúdo da DataTable (índice=0) 
contida no DataSet.
     gridDados.DataSource = Nothing
     gridDados.DataSource = ds.Tables(0)

Envia uma mensagem ao usuário informando o número de registros da DataTable/DataGrid.
     MessageBox.Show("Existem: " + ds.Tables(0).Rows.Count.ToString + " registros")

Caso ocorra algum erro, é tratado aqui. Neste caso, como é um sub-rotina, é preciso 
inserir o THROW para avisar as rotinas a chamou que ocorreu um erro aqui.
  Catch ex As SqlException
      Throw
  Catch ex As Exception
      Throw

Ocorrendo ou não um erro, a conexão com o banco de dados é fechada.
  Finally
      conn.Close()
  End Try
End Sub

Para executar, clique no botão Execute ou pressione F5. A janela aberta solicita que você informe onde irá executar. Use o emulador do Pocket PC e, note que nesta janela são exibidos alguns emuladores que vocês não tem, mas é só fazer download do link (http://www.microsoft.com/downloads/details.aspx?familyid=4953d34d-692f-4c87-ac69-cb235dbdad1d&displaylang=en). Clique no botão Deploy e faça os testes.

Informe o número IP correto e clique no botão Produtos:

Clique no botão Clientes para visualizar todos os clientes:

Conclusão

O uso de um Pocket PC para acessar informações remotamente, juntamente com a tecnologia de Wi-Fi (Wireless Fidelity) facilitou o acesso a qualquer banco de dados. As aplicações que necessitam da informação a qualquer hora e lugar pode usufruir desta técnica mostrada neste artigo. Se formos pensar em um futuro “próximo” onde teremos redes Wi-Fi espalhadas em qualquer lugar, dizer que o acesso as informações é difícil, com certeza seu cliente não entenderá desta forma.

Bons estudos e lembre-se: No Stress, think .NET!!!

Renato Haddad (rehaddad@msn.com) é MVP, editor da revista MSDN Magazine Brasil, ministra treinamentos e palestras sobre .NETe autor de diversos livros e treinamentos em CD multimídia de ASP.NET, Visual Studio .NET 2003 e Aplicações Móveis para celulares e Pocket PC, tanto no Brasil como em outros países da América Latina.

Referências:
www.microsoft.com/windowsmobile


 

©2017 Microsoft Corporation. Todos os direitos reservados. Entre em contato |Nota Legal |Marcas comerciais |Política de Privacidade
Microsoft