Concebido para funcionar em dispositivos móveis, o
Windows Mobile é um dos sistemas operativos mais
utilizados pelos fabricantes nos seus produtos.
Como é hábito, a Microsoft disponibiliza um conjunto de
ferramentas muito interessantes para desenvolver
aplicações para os seus produtos, e o Windows Mobile não é
excepção. Neste artigo vamos abordar ligações a bases de
dados remotas com o Windows Mobile, ou seja, vai ser
descrito em detalhe como efectuar uma ligação de um
dispositivo equipado com Windows Mobile com uma base
de dados num dispositivo remoto. Isto é especialmente útil,
se por exemplo pretendermos sincronizar informação entre
um dispositivo móvel e um computador.
Pré-requisitos
Antes de colocarmos mãos à obra, necessitamos de
ferramentas para trabalhar. Começamos então, por efectuar
o download do Microsoft SQL Server 2005 Express Edition
no site da Microsoft (também pode ser a versão profissional)
(http://www.microsoft.com/downloads/details.aspx?FamilyID
=220549b5-0b07-4448-8848-dcc397514b41&displaylang=ptbr).
Na instalação da aplicação, quando surgir a seguinte
janela, seleccione Modo Misto (autenticação do Windows e
autenticação do sql server), e introduza uma password à sua
escolha. A partir deste ponto, apenas necessita de seguir as
instruções do instalador.
Após a conclusão da instalação, necessita de instalar uma
aplicação que permita, de uma forma visual, interagir com
as bases de dados que vai criar mais à frente. Para isso,
instale o Microsoft SQL Server Management Studio Express
(http://www.microsoft.com/Downloads/details.aspx?FamilyID
=c243a5ae-4bd1-4e3d-94b8-
5a0f62bf7796&displaylang=en#filelist) e proceda á
respectiva instalação.
Após iniciar o SQL Server, em Authentication deverá
seleccionar SQL Server Authentication, e no login deve
introduzir sa e a password que introduziu na instalação do
SQL server, para então iniciar o Microsoft SQL Server
Management Studio Express.
Para este teste, vamos criar uma base de dados com o nome
teste, e uma tabela utilizador, com os campos id, nome com
os tipo de dados int e varchar(50), respectivamente, e o
campo id como chave primária. Introduza também alguns
dados para teste.
Para que a ligação entre o dispositivo móvel e o computador
se torne possível, vamos utilizar o protocolo TCP/IP. Para
isso, necessitamos de configurar o SQL SERVER 2005 para
permitir ligações remotas por TCP/IP.
Vá a INICIAR -> PROGRAMAS -> MICROSOFT SQL SERVER
2005 -> CONFIGURATION TOOLS -> SQL SERVER
SURFACE AREA CONFIGURATION. De seguida, seleccione:
Surface Área Configuration for Services and Connections.
Nesta nova janela seleccione (à esquerda) Remote
Connections e à direita a opção Local and remote
connections -> using TCP/IP only. De seguida, clique em
SQL Server Browser e certifique-se que a opção Startup
type está em Automatic. Pressione Apply e seleccione Start,
no botão correspondente. De seguida, seleccione o item
Service do Database Engine e seleccione o botão stop
seguidamente de start para reiniciar os serviços.
Neste exemplo, vamos utilizar a porta 1433 na ligação
remota. Para configurar a porta dirija-se a INICIAR ->
PROGRAMAS -> MICROSOFT SQL SERVER 2005 ->
CONFIGURATION TOOLS -> SQL SERVER
CONFIGURATION MANAGER.
Seleccione Protocols (à esquerda) dentro de SQL Server
2005 Network Configuration e certifique-se que TCP/IP está
ENABLE. Dê duplo clique em TCP/IP. Nesta nova janela,
certifique-se que TCP/IP está em Enabled no separador
Protocol. De seguida, seleccione o separador IP
ADDRESSES e na última linha (TCP Port) e coloque a porta
1433 conforme demonstra a figura seguinte.
Por fim, reinicie o computador para que as alterações
surtam efeito (ou reinicie novamente os serviços). Já
possuímos o SQL SERVER configurado e a base de dados
com informação suficiente para que possamos testar a
ligação. Chegou então o momento de configurar o Visual
Studio e começar a programar.
Nota importante: Se estiver a utilizar Windows Vista
poderão surgir problemas de permissões, como por
exemplo, não lhe ser permitido parar os serviços do SQL
Server. Se tal acontecer, pode tentar reiniciar o computador
ou então entrar como administrador, efectuar as
configurações e voltar a entrar como um utilizador normal.
Configuração Visual Studio
• Visual Studio 2005/2008 Professional
• Microsoft® Visual Studio® 2005 Team Suite Service
Pack 1
http://www.microsoft.com/downloads/thankyou.aspx?family
Id=bb4a75ab-e2d4-4c96-b39d-
37baf6b5b1dc&displayLang=en
• ActiveSync 4.5
http://www.microsoft.com/downloads/details.aspx?FamilyID
=9E641C34-6F7F-404D-A04BDC09F8141141&
displaylang=pt-br
•NET Compact Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID
=E3821449-3C6B-42F1-9FD9-
0041345B3385&displaylang=en
• Mobile 6 Professional SDK (Professional SDK)
http://www.microsoft.com/downloads/details.aspx?FamilyID
=06111A3A-A651-4745-88EF-
3D48091A390B&displaylang=en
• Virtual PC
http://www.microsoft.com/downloads/details.aspx?FamilyID
=04d26402-3199-48a3-afa2-
2dc0b40a73b6&DisplayLang=en#filelist
Quando o sistema operativo utilizado for o Windows Vista,
então a lista de software necessária varia ligeiramente:
• Visual Studio 2005/2008 Professional com Service
Pack para Windows Vista
• Mobile Device Center
• NET Compact Framework 2.0 com Service Pack 1
• Mobile 6 Professional SDK
• Virtual PC
De notar que a versão do Visual Studio 2005 tem de ser a
Profissional e não a Express Edition fornecida gratuitamente
pela Microsoft.
a programar
Elaboração do código
Após a instalação de todos os componentes referidos,
estamos preparados para começar a programar em
Windows Mobile 6.
No Visual Studio, seleccionamos FILE-> NEW-> Project.
Nesta nova janela, seleccione Visual C#->Smart Device->
Windows Mobile 6 Professional e Device Application. De
seguida, preencha os detalhes do projecto e clique em OK.
Nota: Neste exemplo vou utilizar a linguagem C# mas pode
também utilizar Visual Basic.
Podemos agora visualizar o emulador e o formulário que
vamos construir. Seleccione no separador vertical Toolbox e
irá visualizar os componentes que pode arrastar para o
formulário.
Vamos então construir a nossa aplicação, arrastando um
botão ao qual vamos chamar Testar ligação. As
propriedades dos botões podem ser alteradas recorrendo à
caixa situada no canto inferior direito.
Antes de escrever o código necessitamos de adicionar as
referências necessárias para a elaboração do exemplo. Na
janela Solution Explorer, com o botão direito do rato, clique
sobre o seu projecto e seleccione Add Reference.
Nesta nova janela seleccione System.Data.SqlClient no
separador .NET e clique em OK.
Adicionada a referencia acrescente na sua classe using
System.Data.SqlClient;.
Ligação à base de dados
De seguida, declare a variável Connection, e através do
seguinte método teste a ligação:
private void TestaLigacao(String ip,
String porta,String nomeBd, String
username, String password)
{
Connection = "Data Source=" +
ip + "," + porta + ";Initial Catalog="
+ nomeBd + ";User ID=" + username +
";Password=" + password + ";";
SqlConnection comm = new
SqlConnection(Connection);
try
{
comm.Open();
comm.Close();
MessageBox.Show("Sucesso");
}
catch
{
MessageBox.Show("Erro na
ligação");
}
}
Este método recebe os parâmetros que necessita para
efectuar a ligação, ou seja, o ip ao qual vamos conectar, a
porta, o nome da base de dados, username e password.
Estes dados são depois concatenados na string Connection,
que vai ser a nossa string de ligação. Posteriormente
criamos uma ligação SQL (SqlConnection comm = new
SqlConnection(sConnection);) e testamos se a ligação é
efectuada com sucesso.
No evento do botão que foi criado, invocamos o método
descrito anteriormente:
private void button1_Click(object
sender, EventArgs e)
{
TestaLigacao("192.168.1.2","1433","test
e","sa","1234");
}
O primeiro parâmetro é o seu ip da rede, o segundo a porta
de ligação que definiu, “teste” o nome da base de dados
criada, “sa” o utilizador e 1234 é a password que coloquei
quando instalei o SQL Server 2005 (não muito original digase).
Nota: Se não sabe qual o seu IP, vá ao menu iniciar ->
executar e digite cmd. Quando surgir a janela do DOS digite
o comando IPCONFIG e será exibida a informação sobre o
seu IP.
Grave o projecto e execute através do botão start. Quando
surgir a janela de escolha do emulador, pode escolher
aquele que desejar, neste exemplo optei por Windows
Mobile 6 Classic emulator.
Quando o emulador iniciar, seja paciente e aguarde que o
emulador compile o programa. Quando o emulador é
iniciado pela primeira vez, demora algum tempo a ficar
preparado. Após surgir o seu formulário no emulador,
certifique-se que o emulador tem acesso à internet, ou se
tem IP da sua rede.
Para isso, na janela do emulador selecione File-> configure
No terceiro separador, certifique-se que a opção Enable
NE2000 PCMIA network adapter and bind to está
seleccionada e na caixa a opção Connected network card
também o está, conforme demonstra a figura 15. Caso não
esteja, coloque como descrito e reinicie o emulador.
Nota: a opção Connected network card, detecta
automaticamente qual o hardware que está a utilizar para
aceder à rede, mas também o pode escolher directamente.
Após reiniciar o emulador, no sistema operativo deste dirijase
ao seu programa (Start->programs-> File explorer->
program files-> nome do seu projecto). Nas opções de rede
do emulador pode também especificar um IP para o
emulador, se assim o desejar. Se tudo correu bem, irá
visualizar a mensagem de sucesso após pressionar o botão
Testar Ligação.
Agora que conseguimos ligar à base de dados vamos testar
um Select,Insert, delete e update.
Altere o seu método TestaLigação (ou crie outro) de modo a
que o método apenas abra a ligação e a atribua à variável
comm global da classe. Neste exemplo, optei por criar um
método novo chamado Abre_ligacao.
SELECT:
private void Abre_ligacao(String ip,
String porta,String nomeBd, String
username, String password)
{
Connection = "Data Source=" +
ip + "," + porta + ";Initial Catalog="
+ nomeBd + ";User ID=" + username +
";Password=" + password + ";";
comm = new
SqlConnection(Connection);
try
{
comm.Open();
}
catch
{
MessageBox.Show("Erro na
ligação");
}
}
private void TestaSelect()
{
String query = "SELECT nome FROM
utilizador";
SqlDataReader dr = null;
try
{
SqlCommand cmd =
comm.CreateCommand();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
dr = cmd.ExecuteReader();
while (dr.Read())
{
String nome =
dr["nome"].ToString();
MessageBox.Show(nome);
}
}
catch
{
MessageBox.Show("Erro no
select");
}
}
Este método selecciona o nome dos registos presentes na
tabela utilizador e mostra-os um a um numa MessageBox,
isto apenas a título de exemplo, pois estes dados podem ser
colocados numa Listbox, ComboBox ou qualquer outro
componente que permita listar dados. Crie agora um novo
botão e invoque os métodos:
private void button2_Click(object
sender, EventArgs e){
Abre_ligacao("192.168.1.2",
"1433", "teste", "sa", "1234");
TestaSelect();
comm.Close();
}
UPDATE:
private void TestaUpdate(){
String query = "UPDATE utilizador
SET nome='Bruno Oliveira' WHERE
nome='Bruno'";
SqlDataReader dr = null;
try{
SqlCommand cmd =
comm.CreateCommand();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
MessageBox.Show("Dados actualizados
com sucesso");
}
catch{
MessageBox.Show("Erro no
update");
}
}
Para as queries DELETE e INSERT o procedimento é
idêntico, alterando apenas a query, pois os comandos são
mesmos.
Construir o executável
Agora que já conseguimos efectuar comandos sobre a base
de dados, podemos testar o programa criado num
dispositivo real. Para isso, no Visual Studio seleccione FILE -
> NEW -> PROJECT -> Other project types -> Setup and
Deployment e de seguida Smart Device CAB Project.
Clique com o botão direito do rato sobre Program files
folder-> Add-> File. Dirija-se à pasta do seu projecto, vá até
bin-> Debug e seleccione o ficheiro executável.
Por fim, seleccione Build Solution (CTRL+SHIFT+B). Dirija-se
à pasta deste projecto que criou (CAB Project), e posicionese
dentro da pasta Debug.
Copiamos o ficheiro com o mesmo nome do projecto (o de
maior tamanho) para a raiz do dispositivo utilizando o
ActiveSync. Uma vez copiado o ficheiro, resta apenas
instala-lo no dispositivo e testar a ligação.
Conclusão
Ao longo do artigo foi descrito, com bastante precisão,
todos os passos necessários para a ligação a bases de dados
remotas através de um dispositivo móvel. Caso tenha
alguma dúvida, problema, sugestão ou crítica a este artigo,
esteja à vontade de me contactar através do e-mail
disponibilizado no final deste artigo.
0 comentários:
Postar um comentário