Visual Basic 6 - Como acessar um banco de dados Remoto
Frequentemente eu recebo questões relacionadas com o acesso remoto a banco de dados usando o Visual Basic. Parece que a pergunta não quer calar: Como acessar um banco de dados Remoto usando o Visual Basic ?
Existem muitas formas de acessar um banco de dados remoto , em rede local , na internet , intranet etc. Você pode usar ASP , PHP , Cold Fusion , ASP.NET , Pearl, etc. Mas você quer acessar um banco de dados através de sua aplicação VB não é mesmo ?
Antes de mostrar uma das maneiras de fazer isto você deve levar em consideração alguns fatores que eu considero fundamentais nesta questão:
Considerando que você tenha pesado bem os fatores acima mencionados , e outros que julgar relevantes , vou passar a mostrar como você pode acessar um banco de dados remoto. Nesta solução eu vou estar acessando um banco de dados Access remotamente usando duas aplicações VB : a aplicação cliente , que solicita os dados , e a aplicação servidor que atende as solicitações e responde com a informação desejada. (Em uma rede local ou internet ou intranet sempre teremos quem faz a requisição e sempre teremos quem atende a requisição. Se você usar ASP , por exemplo , as páginas ASP no cliente fazerm a requisição e o servidor que atende deverá possuir o ASP instalado para decifrar e atender a requisição.)
A seguir temos um panorama do nosso problema e da solução que vamos usar:
Vamos ter que construir duas aplicações : a aplicação cliente que irá rodar na máquina a partir da onde você deseja consultar e a aplicação servidor que deverá rodar na máquina onde esta localizando o banco de dados que você quer acessar.
A estrutura da tabela Produtos é dada abaixo:
Vou usar a coluna CódigoDoProduto para selecionar o produto desejado e obter os campos NomeDoProduto e PreçoUnitário.
Vou usar o componente Winsock para realizar o acesso remoto. Eu aconselho que você leia os artigos abaixo para se familiarizar com os conceitos relativos ao componente Winsock:
Criando a aplicação Cliente
Nossa aplicação cliente possuirá um único formulário e os controles : Winsock , TextBox , Shape , Label e CommandButton conforme o layout da figura abaixo:
Controles
: CommandButton: name/Caption/Style - Graphical 1 - backcolor
TextBox : name
Winsock : Name
Shape : name
|
Informações que a aplicação cliente deverá conhecer:
A seguir temos o código da aplicação Cliente :
Option
Explicit Dim strmsgDados As String Private Sub
cmdConectar_Click() Private Sub
cmdEnviar_Click() Private Sub
cmdEncerrar_Click() Private Sub
Winsock1_DataArrival(ByVal bytesTotal As Long) Private Sub
Winsock1_SendComplete() |
1- Ao executar o projeto você deverá informar o código do produto na primeira caixa de texto e clicar no botão Conectar
Winsock1.RemoteHost
= "127.0.0.1"
Winsock1.RemotePort = 80
Winsock1.Connect
2- Após feita a conexão você pode clicar no botão enviar para que os dados sejam enviados para o host de destino
Winsock1.SendData txtItem.Text
3- Ao receber a resposta do host você deverá verificar se há dados válidos . Se os dados forem válidos usamos a função split do VB6 para extrair os dados e exibí-os nas caixas de textos pertinentes:(O delimitador usado é o arroba - @)
if
sDadosRecebidos = "Null" Then
strmsgDados = "Não há dados para este
código."
Else
'separa os dados
sDados() = Split(sDadosRecebidos,
"@")
'exibe os dados
txtNomeProduto.Text = sDados(0)
txtPrecoProduto.Text = Format(sDados(1),
"###0.00")
'envia mensagem
strmsgDados = "Dados exibidos com
sucesso."
End If
A aplicação cliente já esta pronta , mas ela é inútil se não houver uma aplicação que atenda sua requisição e de a resposta deseja. Esta é aplicação servidor.
Criando a aplicação Servidor
Controles: ListBox - List1 Label : name
CommandButton
|
O que a aplicação Servidor deverá conhecer:
Abaixo temos o código da aplicação servidor:
Option
Explicit Dim iSockets As Integer Dim msgServidor As String Dim sCodigoRequisicao As String Private Sub Form_Load()
Private Sub
cmdLimpar_Click() Private Sub
socket_Close(Index As Integer) |
1- A aplicação servidor atende a requisição do cliente e recebe os dados
Socket(Index).GetData sItemDados, vbString
2- Abre a base de dados
strConexao =
"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security
Info=False;Data Source=c:/teste/Northwind.mdb;
Mode=Read|Write"
3- Monta a requisição para efetuar a busca na tabela Produtos
strDados = "CódigoDoProduto = '" & sItemDados & "'"
4- Abre o recordset e faz a busca de dados
rs.Open
"select * from Produtos", strConexao, adOpenKeyset,
adLockOptimistic
rs.Find strDados
5- Verifica se os dados foram encontrados e monta a string que devera ser devolvida ao cliente
f rs.EOF Then
strDadosSaida = "Null"
Else
strDadosSaida =
rs.Fields("NomeDoProduto") & "@" &
rs.Fields("PreçoUnitário")
End If
6- Envia os dados ao cliente
Socket(Index).SendData strDadosSaida
Creio que agora você já pode testar o projeto. Eu vou fazer o teste na minha máquina local (ip - 127.0.0.1) usando a porta 80 .
Execute primeiro a aplicação cliente e a seguir a aplicação servidor. Clique no botão - Conectar - informe um código de produto que deseja consultar e a seguir clique no botão - Enviar Dados. O resultado poderá ser visto como na figura abaixo:
Acabamos de acessar um banco de dados remoto usando Winsock. É uma aplicação simples que você pode melhorar e incrementar com tratamento de erros , e outras funcionalidades.
O código completo dos dois projetos estão no Super DVD Visual Basic
Agora o Super DVD Visual Basic possui todo o conteúdo do Super CD ASP TOTAL
Até o próximo artigo
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 ? |
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