Meu Primeiro Acesso a Dados com o VB.NET

Como prometido no artigo - ADO.NET - O acesso aos dados - vamos agora mostrar em detalhes como acessar os dados de um banco de dados usando o VB.NET.

Eu finalmente consegui resolver o problema da instalação da minha versão Beta 2 do Visual Studio .NET e com isso me sinto mais a vontade para falar sobre este assunto , já que houve alterações significativos da versão beta 1 para beta 2 neste quesito.

Bem o nosso cenário é o seguinte:

  1. Temos um banco de dados Access 97 com o nome de Agenda localizado na pasta c:\contatos
  2. Este banco de dados possui a tabela Clientes que possui a seguinte estrutura :
Estrutura da tabela Clientes do Banco de dados Agenda.mdb localizado na pasta c:\contatos.
  1. Nosso objetivo será acessar os dados da tabela Clientes
  2. Permitir a navegação pelos registros
  3. Permitir a alteração , inclusão e exclusão de registros.
  4. Utilizar o VB.NET para acessar os dados

Ora , então vamos a luta...

Os requisitos e o ambiente de desenvolvimento

Para realizar esta tarefa você vai precisar possuir o Visual Studio .NET versão Beta 2 instalada e funcionando no seu computador. ( A beta 2 não funciona no Windows 95/98 ).

Inicie o Visual Studio .NET beta 2 em : 

Iniciar | Todos os Programas | Microsoft Visual Studio.NET 7.0  | Microsoft Visual Studio.NET 7.0

A tela inicial que você verá é a seguinte:

Na tela inicial você tem uma interface integrada a Web ; veja as opções : What´s New , Online Community , Headlines, Serach Online , Downloads , Web Hosting que permitem o acesso a documentação On-Line no próprio ambiente de desenvolvimento.

Como vamos iniciar um novo projeto vamos selecionar a opção New Project

Aqui selecionamos o Tipo  e o Modelo de Projeto que iremos criar , o Local onde iremos armazenar os arquivos do projeto e o Nome que iremos dar ao nosso projeto.  Como você pode ver nossas escolhas foram:

Clique no botão OK , e iremos ver a seguinte tela:

Para detalhes sobre o ambiente veja o artigo - VB.NET - Criando aplicações Windows - mas podemos ver na tela no lado esquerdo a ToolBox , no centro o formulário padrão , a esquerda as janelas de Propriedades e Class View.

Já vimos que a propriedade Text agora corresponde a propriedade Caption e que não existe mais o controle CommandButton : agora é só Button.

Vamos alterar a propriedade Text do formulário para Contatos e  alterar também o nome do arquivo form1.vb para Contatos.vb .(Para fazer esta alteração clique com o botão direito do mouse sobre o nome do arquivo form1.vb e selecione a opção - Rename ).  Assim temos:

Alterando as propriedades Text e Name do formulário Alterando o nome do arquivo form1.vb

Obs: No VB.NET tudo são classes , assim os formulários são classes que expôe uma interface gráfica. Percebeu que ao alterar o nome do formulário ( classe ) o nome do arquivo ( form1.vb ) não foi alterado . 

Vamos  dar uma espiada no código do formulário . Clique na opção - View Code - do Solution Explorer ou clique com o botão direito do mouse sobre o formulário e selecione a opção - View Code:

O código exibido após selecionar a opção - View Code.

Veja que a nossa classe - Contatos - possui o código localizado no item - Windows Form Designer generated Code - Se quiser ver o código basta expandir o item clicando no sinal de ( + ).

Resumo das tarefas realizadas :

Até agora não fizemos nada de excepcional :

  1. Iniciamos o Visual Studio.NET 7.0
  2. Definimos um novo projeto como: Visual Basic Project , Windows Application
  3. Alteramos a propriedade Text do formulário padrão para Contatos
  4. Alteramos o nome do arquivo form1.vb para contatos.vb

Nesta altura o seu projeto deve estar conforme a tela a seguir:

Se você quiser executar o projeto para ver o que acontece basta pressionar a tecla F5 ou clicar no  botão do menu. Você verá apenas o formulário vazio exibido na tela.

Criando a conexão e o acesso aos dados : DataSet

Agora  a coisa vai ficar mais interessante vamos criar os objetos que permitirão o acesso aos dados da tabela Clientes do banco de dados Agenda.mdb.

Vamos usar a ADO.NET para fornecer o acesso aos dados ( leia o artigo : ADO.NET - O acesso aos dados ) através do DataSet.  O DataSet proporciona o acesso a tabelas , linhas , colunas , relacionamentos , constraints e pode conter diversas tabelas e relacionamentos.

1- Criando o DataSet

Vamos agora criar o DataSet para manipular os dados da tabela Clientes . Para isto vamos criar e configurar um Data Adapter  usando um assistente que nos ajudará no processo.

Nota:  DataAdapter - Fornece dados ao DataSet e propaga as alterações do DataSet para a fonte de dados. O serviço do DataAdpater é adpatar os dados dos objetos Command e incluí-los no DataSet e levar os dados do DataSet a fonte de dados usando objetos Command.

Prepare-se :

  1. Selecione a Caixa de ferramentas - ToolBox - e clique na guia Data . A seguir selecione o objeto OleDbDataAdapter e o arraste para formulário projeto.(ver abaixo)
  2. Ao soltar o objeto no formulário o Assistente será iniciado como na figura abaixo:

A guia Data e o objeto OLedbDataAdapter A tela inicial do assistente para configurar o Data Adapter
  1. Click no botão Next e teremos a seguir a tela onde iremos criar um objeto Connection . Clique então na opção New Connection.

  1. Na janela - Propriedades de vinculação de dados - na guia Provedor , selecione Microsoft Jet 4.o OLE DB Provider ( pois estamos acessando uma base de dados access) e clique no botão Avançar. Depois na guia - Conexão - clique no botão da opção  1- Selecione ou insira o nome de um banco de dados - e selecione o banco de dados Agenda.mdb ( ou o seu bd ). Depois clique no botão  - Testar Conexão - , e , se você fez tudo certinho , verá a mensagem- Teste de conexão bem sucedido. (Veja nas figuras a seguir)
  1. Clique em OK e a tela mostrada abaixo irá surgir . Selecione a opção - Use SQL statements - (pois vamos usar uma instrução SQL ) e clique em Next

  1. Na janela a seguir devemos inserir a instrução SQL que irá retornar os registros que desejamos manipular da tabela clientes. Como queremos selecionar todos os registros vamos usar uma instrução Select como mostra abaixo.

  1. Agora podemos clicar no botão Finish pois já temos o OLedbDataAdpater configurado. Perceba que no seu projeto agora existem dois novos objetos : OleDbDataAdapter1 e OleDbConnection1 que foram criados e associados ao formulário Contatos , na parte inferior , abaixo do formulário:
 

Vamos alterar algumas das propriedades dos objetos OleDbDataAdapter1 e OleDbConnection1. Vamos por partes :

Objeto OleDbDataAdapter1

- Selecione o objeto OleDbDataAdapter1 , clique com o botão direito do mouse e escolha - Properties.

A janela de propriedades para OleDbDataAdapter1 Alterando o nome das propriedades que armazenam as instruções SQL

Vamos alterar a propriedade Name para daClientes ; vamos alterar também as propriedades que contém as instruções SQL : SelectCommand , DeleteCommand , InsertCommand , UpdateCommand.

Para fazer isto expanda a propriedade clicando no simbolo (+) e em Name altere o nome conforme exibido na figura acima para a propriedade SelectCommand onde alteramos Name para SelecionaClientes.

Repita o processo para as demais propriedades conforme a tabela a seguir:

Propriedade Valor Padrão Alterar para
DeleteCommand OleDbDeleteCommand1 ExcluirClientes
InsertCommand OleDbInsertCommand1 InserirClientes
UpdateCommand OleDbUpdateCommand1 AtualizarClientes

Objeto OleDbConnection1

- Selecione o objeto OleDbConnection1 , clique com o botão direito do mouse e escolha - Properties.

Vamos alterar a propriedade Name para cnAgenda

 

Obs: Veja as propriedades DataSource , Provider e ConnectionString

Gerando o DataSet

Agora estamos pronto para gerar o DataSet , para isto selecione o objeto daClientes(OleDbDataAdapter) e clique com o botão direito do mouse . A seguir escolha a opção : Generete DataSet...

Escolhendo a opção para gera o DataSet A janela para gerar o DataSet

Na próxima janela escolha a opção New e informe o nome DsClientes e as opções conforme acima e clique em OK.

Teremos o objeto DsClientes  exibido no painel abaixo do formulário ,  conforme figura ao lado

Colocando os controles no formulário

Agora vamos para uma tarefa que você ja esta acostumado. Vamos inserir os controles TextBox , Label , Button no formulário para exibir os dados da tabela clientes e para permitir a ação do usuário para gerenciar os dados. Crie a interface conforme o layout exibido abaixo:

 

-Alteramos as propriedades Text de cada controle para o nome indicado no controle

-Lembre-se que a propriedade Caption não existe mais

-Lembre-se que Button equivale ao antigo commandButton

Fazendo a vinculação dos controles com os dados

Agora preste atenção !!! vamos fazer a vinculação de cada controle TextBox com o respectivo campo da tabela que ele exibirá. Para isto vamos alterar a propriedade Text , expandindo a propriedade DataBindings de cada controle:

Expanda DataBindings , clicando em +  , a seguir expanda DsClientes , depois expanda Clientes e selecione nome do campo que deseja exibir no controle. Repita isto para cada controle TextBox.

Escrevendo o código

Agora vamos escrever o código para o nosso projeto. A lógica será a seguinte:

- O DataSet deve receber os dados a exibir e alimentará os controles textBox com a informação referente a cada campo vinculado. Para exibir os dados na carga do formulário e na navegação pelos registros vamos usar uma função para fazer este serviço : a função Carrega_DataSet cujo código é o seguinte:

Public Sub Carrega_Dataset(ByVal dataset As contatos.DsClientes)

   Me.cnAgenda.Open()

   dataset.EnforceConstraints = False

   Try               'dispara o método Fill do objeto DataAdapter

        Me.daClientes.Fill(dataset)

   Catch cException As system.Exception

        Throw cException

   Finally

         dataset.EnforceConstraints = True

        Me.cnAgenda.Close()

   End Try

End Sub

 Aqui temos o objeto Data Adapter  - daClientes - usando o método Fill que esta vinculado a instrução SQL - Select * from Clientes.

Esta estranhando a instrução : Try...Catch ... Finally ... Throw

Dentro do bloco Try colocamos o código que pode apresentar erros . Se ocorrer um erro durante o processamento cada declaração Catch vai ser percorrida em busca do tratamento para o erro em questão. O bloco Finally sempre será executado depois do processamento do bloco Try . A declaração Throw pode ser usada para gerar um erro.

Agora basta chamar a função Carrega_Dataset no evento Load do formulário para carregar os dados na carga do mesmo. O código para isto é o seguinte:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'vamos usar a rotina carrega_dataset para preencher

'o objeto dataset com os registros retornados pela

'instrução SQL

   Carrega_Dataset(DsClientes)

   Exibe_Posicao()

End Sub

Perceba que temos outra função - Exibe_Posição - que verifica se existe dados a serem exibidos e que informa a posição relativa do registro frente ao total de registros da tabela. O seu código é o seguinte:

Public Sub Exibe_Posicao()

Dim icontador As Integer

Dim iposicao As Integer

   icontador = Me.BindingContext(DsClientes, "Clientes").Count

   If icontador = 0 Then

       txtpainel.Text = "Não existem dados !!"

   Else

       iposicao = Me.BindingContext(DsClientes, "Clientes").Position + 1

       txtpainel.Text = " Reg " & iposicao.ToString & " de " & icontador.ToString

End If

End Sub

Ao executar o projeto , finalmente veremos os dados exibidos conforme a figura abaixo:

Após terminar , você pode executar o projeto que os dados serão exibidos no formulário conforme figura ao lado.

Com isto terminamos a primeira parte deste artigo , onde mostramos como acessar e exibir os dados de uma base de dados no VB.NET . A continuação deste artigo será como dar manutenção nos dados , ou seja ,  realizar alterações , exclusões e atualizações em uma base de dados.

A versão mais atual para desenvolver aplicações VB .NET é o Visual Studio 2010 ou o Visual Basic 2010 Express Edition e muita coisa evoluiu desde então.

Acompanhe os artigos mais atuais na seção:Seção VB .NET do Site Macoratti.net

Até lá , ...

Referências:


José Carlos Macoratti