Conexão com Banco Acess

Conexão com Banco Acess

 

ACESSO A BANCO DE DADOS ACESS

Esta Rotina faz a ligação com um banco de dados.

Diversos são os programas que precisam acessar banco de dados. Estes podem ser SQL ou por outros aplicativos da Microsoft como o Acess e até mesmo o Excel. Bom, eu particularmente prefiro o Acess pela sua facilidade de manipulação caso você precise aproeitar os dados do banco em outra aplicação. Os entendidos do assunto porém sugerem para grandes aplicações outros bancos de dados.

As rotinas de inclusão, alteração e exclusão de dados são utilizadas nas mais simples aplicações como uma agenda de telefones, endereços etc.

A primeira idéia que você deve ter é a de justamente qual banco de dados você utilizará. Depois, quais dados e tipos de dados que você incluirá nesse banco. Veja um exemplo simples na tabela abaixo que simula um banco de dados:

Local do arquivo

Nome do

banco

de dados

Nome da

tabela

Campo da

tabela

Tipo de

dado

Tipo de dado no VB

C:agendabd.mdb

bd.mdb

Contatos

Nome

Letras

String

Endereco

Letras e números

String

Telefone

Números

Integer ou string

Nascimento

Data

Date

Catolico

Opções (sim, não)

Boolean (true, false)

 

É muito importante você observar a tabela acima e suas características:

1.   Seu banco de dados possui um caminho

2.   Seu banco de dados pode ter várias tabelas

3.   As tabelas do banco de dados podem ter vários campos

4.   Cada campo de sua tabela possui um tipo de dado

 

Saber disso é muito importante porque, para executar as operações com seu banco de dados você deverá:

 

1.           Utilizar o componente certo para seu banco de dados

2.           Indicar ao programa por meio de um código onde está seu banco de dados

3.           Indicar ao programa em qual tabela e qual campo você quer incluir, alterar ou excluiros dados

4.           Em alguns casos converter um tipo de dado para outro

 

 

 

Acessando dados do Microsoft Access

Para se conectar com um banco de dados Access você precisará:

1.           Declarar o Imports System.Data.OleDb no topo do form

2.           criar um objeto OleDbConnection que é o adequado ao banco de dados acess

3.           usar uma string de conexão que indica a fonte de dados que você deseja acessar e o nome do provedor que você está usando.

 

A string de conexão básica para acessar um banco de dados Access é: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:caminhoarquivo.mdb"

Aqui estamos definindo duas propriedades : Provider e Data Source, ou seja o provedor e o local dos dados. Na verdade são conceitos um pouco desnecessários por agora.

Mas e se o seu banco de dados Access estiver protegido com senha ? Qual a string de conexão ? Neste caso a string de conexão ficaria assim:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C: esteClientes.mdb ; Jet OLEDB:Systemdatabase=C:caminhosystem.md;UserID=IdentificacaoUsuario;Password=SenhaUsuario

Aqui estamos definindo o arquivo .mdw responsável pela segurança do arquivo mdb usando a propriedade Jet OLE DB e definindo a identificação do usuário e sua senha nas propriedades : User ID e Password.

 

Bom, você ainda não está conectado ao banco de dados, pois são necessários alguns comandos e declarações de variáveis, alguns talvez sejam avançados para serem explicados neste ponto:

' declara uma variável de conexão para o objeto oledb

Dim cn As New OleDbConnection

' Define uma variável de comando para o objeto oleDb

        Dim cmd As New OleDbCommand

' Define a variável declarada para a conexão na variável declarada para o comando

        cmd.Connection = cn

' Define o comando como texto

        cmd.CommandType = CommandType.Text

' Define a string de conexão, ou seja indica o caminho do banco de dados

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:nomedapastanomedobanco.mdb"

' Abre a conexao.

cn.Open()

 

 

 

Agora sim, você está conectado e pronto para utilizar seu banco de dados.

Quando queremos executar uma operação, por exemplo, quando o usuário do programa clicar no botão SALVAR DADOS, devemos definir essa operação. Tais operações são chamadas de rotinas, procedures, funções etc. Obviamente cada um desses nomes tem o local certo de serem utilizados, porém o resultado na maioria dos casos é o mesmo.

 

Várias são as rotinas e os comandos utilizados nas operações com banco de dados, vamos as mais comuns, pelo menos para mim:

 

1.           Salvar dados

2.           Alterar dados

3.           Excluir dados

4.           Carregar dados

 

Cada uma dessas rotinas ou comandos segue um padrão de codificação, o que muda é simplesmente o comando, pois a ligação, conexão com o banco é a mesma. Desse modo, utilizaremos os passos abaixo para todas as operações:

 

1.           Criação do objeto oleDb

2.           Conexão com o banco

3.           Comando desejado

 

 

Dessa maneira, antes de qualquer coisa, se você vai trabalhar com acesso e manipulação de dados, você deve:

 

1.           Declarar o Imports System.Data.OleDb no topo do form

2.           criar um objeto OleDbConnection que é o adequado ao banco de dados acess

3.           usar uma string de conexão que indica a fonte de dados que você deseja acessar e o nome do provedor que você está usando.



 

‘INCLUSÃO DE DADOS

 

 

A Rotina abaixo inclui dados no banco, perceba que os nomes em azul e sobrescritos deverão ser alterados de acordo com sua aplicação.

 

' Cria uma rotina para salvar os dados

Private Sub SALVAR ()

'declara as variáveis e define os comandos

            Dim cn As New OleDbConnection

      Dim cmd As New OleDbCommand

      cmd.Connection = cn

      cmd.CommandType = CommandType.Text

 

        Try

            ' Define a string de conexão

            cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:CAMINHOARQUIVO.mdb"

            ' Abre a conexao.

            cn.ConnectionString = cn.ConnectionString

            cn.Open()

            'Define as propriedades do objeto COmmand

            cmd.Connection = cn

            ' Cria um DataReader

            cmd.CommandText = "insert into nomedatabela(nomecampo1, nomecampo2)values('" & controle.Text & "')"

            cmd.ExecuteNonQuery()

            cn.Close()

MsgBox("REGISTRO INCLUÍDO COM SUCESSO!")

        Catch ex As Exception

            MsgBox(ex.Message())

        End Try

 

    End Sub

 

 

 

 

' ALTERAR REGISTRO

   

Esta Rotina altera um registro salvo em um banco de dados por meio de um critério. Perceba que o comando muda, ao invés de INSERT tornou-se UPDATE.

Private Sub ALTERAR()

 

            Dim cn As New OleDbConnection

        Dim cmd As New OleDbCommand

        cmd.Connection = cn

        cmd.CommandType = CommandType.Text

 

        Try

            ' Define a string de conexão

            cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:CAMINHOARQUIVO.mdb"

            ' Abre a conexao.

            cn.ConnectionString = cn.ConnectionString

            cn.Open()

            'Define as propriedades do objeto COmmand

            cmd.Connection = cn

            ' Cria um DataReader (perceba qu eo comando mudou ao invés de INSERT tornou-se UPDATE

                        cmd.CommandText = "UPDATE TABELA SET CAMPO = '" & TEXTBOX.Text & "' where CAMPO like '*" & TEXTBOX.Text & "*'"

               

            cmd.ExecuteNonQuery()

 

        Catch ex As Exception

            MsgBox(ex.Message())

        End Try

 

            cn.Close()

            MsgBox("REGISTRO ALTERADO COM SUCESSO!")

 

    End Sub

 

  

 OBS: perceba que no seguimento... like '*" & TEXTBOX.Text & "*'" ... o * (asterisco) está entre as aspas, isso porque estamos definindo que o critério deve ser exatamente o contido no '*" & TEXTBOX.Text & "*'". Caso se pretenda usar um critério aproximado deve se utilizar o %, ficando desta forma... like '%" & TEXTBOX.Text & "%'".

 

 

 

 

 

 'EXCLUIR REGISTROS

Esta Rotina exclui um registro salvo em um banco de dados por meio de um critério.

 

Private Sub EXCLUIR()

 

        Dim cn As New OleDb.OleDbConnection

        Dim cmd As New OleDb.OleDbCommand

        cmd.Connection = cn

        cmd.CommandType = CommandType.Text

        If nome.Text > "" Then

 

            Try

                ' Define a string de conexão

                cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:CAMINHOARQUIVO.mdb"

                ' Abre a conexao.

                cn.ConnectionString = cn.ConnectionString

                cn.Open()

                'Define as propriedades do objeto COmmand

                cmd.Connection = cn

                ' Cria um DataReader

                cmd.CommandText = "DELETE FROM TABELA where CAMPO like '*" & TEXTBOX.Text & "*'""

 

                cmd.ExecuteNonQuery()

 

                'SE A ROTINA OCORRER OK ENTAO CARREGA LISTA

                carregaLista(lista, "select CAMPO from TABELA order by CAMPO")

 

            Catch ex As Exception

                MsgBox(ex.Message())

            End Try

        Else : MsgBox("REGISTRO EXCLUIDO COM SUCESSO!")

 

        End If

 

                cn.Close()

 

    End Sub

Carrega dados

Várias são as formas de se buscar dados de um banco. Duas delas são:

1.                  Criando a rotina CARREGARDADOS

2.                  Carregando os dados em um controle (listbox, Combobox) – Neste caso é preciso carregar os dados por meio de um comando


Bem, para carregar dados de um banco é preciso voltar aos dados iniciais. Sabemos que temos de fazer uma conexão com o banco de dados, indicar as tabelas e os campos que queremos acessar. Além disso, devemos indicar um critério para nossa pesquisa, caso contrário o aplicativo se confundirá. Basta imaginar quantos Paulos você terá em sua agenda.

No banco de dados acess você tem um campo automatizado que gera um número (código), ele pode servir como critério, porém você pode criar um critério, como por exemplo um protocolo, um número de entrada, etc.


Imaginemos um banco de dados com a tabela abaixo:

Local do

arquivo

banco de

dados

tabela

Campo

Dado

Campo

Dado

Campo

Dado

C:agendabd.mdb

bd.mdb

Contatos

código

1

Nome

Paulo

telefone

88585566

2

Paulo

99543246

3

Paulo

54981549

4

Paulo

54984249

5

Paulo

21516215


Veja que você tem uma tabela com três campos. Veja que você possui cinco registros com nome de Paulo. Você deverá utilizar um critério para sua pesquisa, caso contrário sua pesquisa trará um monte de registros com dados semelhantes. Agora imagine se você for alterar o número do telefone de um deles, se você não indicar de qual Paulo você quer alterar o número você vai alterar todos os números cujo nome seja Paulo. Por isso é importante estabelecer um critério.


Para  carregar os dados em um listbox você deverá:

1.        criar uma rotina que faça a ligação com o banco de dados

2.       depois  deverá criar um comando para realizar a pesquisa

3.       Estabelecer um critério para sua pesquisa








ROTINA CARREGA LISTA

Esta Rotina faz a ligação com um banco de dados para que sejam carregados os dados de uma tabela em uma listbox. Ela somente é uma preparação para um comando que carregará os dados, ela pode ser usada também para COMBOBOX, bastando para isso substituir o tipo do objeto para tal, veja listbox. O modelo de comando vê-se abaixo da rotina.

 

Private Sub carregaLista(ByVal lst As ListBox, ByVal query As String)

' limpa listbox para evitar que as pesquisas se acumulem

        LISTA.Items.Clear()

' estabelece a conexão

        Dim cn As New OleDbConnection

        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:CAMINHOARQUIVO.mdb"

        ' abre a conexao

        cn.Open()

 

        ' cria um comando select.

        Dim cmd As New OleDb.OleDbCommand(query, cn)

 

        ' executa a consulta

        Dim db_reader As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.Default)

 

        ' declara as variáveis para realizar a busca por meio de um DO WHILE

        Dim texto As String

        Dim i As Integer

' Esta rotina busca item por item até que tenha percorrido todos na tabela

        Do While db_reader.Read

            texto = db_reader.Item(0).ToString

            For i = 1 To db_reader.FieldCount - 1

                texto &= vbTab & db_reader.Item(i).ToString

            Next i

' adiciona item por item ao listbox

            LISTA.Items.Add(texto)

        Loop

        ' fecha a conexao

        cn.Close()

 

    End Sub



 

COMANDO CARREGA DADOS

 

A criação da rotina é apenas o primeiro passo para a pesquisa, pois você deverá criar um comando para realizar a busca utilizando a rotina criada. O comando a ser criado segue abaixo:

‘COMANDO PARA CARREGAR OS DADOS

            carregaLista(LISTA, "select CAMPO from TABELA CAMPO where like '%" & TEXTBOX.Text & "%' order by CAMPO")

 

Veja que o comando segue os seguintes passos:

1.           começa com a rotina criada (carregalista),

2.           depois vem o nome do listbox (lista) no qual os dados devem ser escritos,

3.           depois  o comando SELECT, seguido do nome do campo desejado (por exemplo, os nomes dos contatos),

4.            depois  segue-se o critério para a pesquisa sendo que o valor do dado do campo indicado deverá ser como (aproximado por causa do %) o valor contido no controle '%" & TEXTBOX.Text & "%'

5.            depois o comando organiza a exibição dos dados por um campo deseja, se você quer exibir os nomes dos contatos, mas quer exibi-los em ordem crescente de data de nascimento por exemplo, o comando deveria ser:

‘COMANDO PARA CARREGAR OS DADOS

            carregaLista(LISTA, "select Nome from Contatos where Nome like '%" & txtnome.Text & "%' order by nascimento")


 

 

 

A rotina mais utilizada, porém,  é a que carrega todos os dados de um determinado registro nos campos do FORM. Esta rotina também necessita de uma conexão com o banco de dados. O comando, contudo, vem dentro da rotina. Para a criação da rotina você deverá:

1.                  Realizar a conexão com o banco

2.                  Criar o comando com um critério de pesquisa

3.                  Indicar onde o dado deverá ser escrito no FORMULÁRIO

 

‘CARREGA DADOS

Esta Rotina carrega os dados de uma tabela nos campos dos formularios de acordo com um critério.

Private Sub carregadados()

 

        Dim oConn As New OleDb.OleDbConnection

‘Define a conexão

        oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:CAMINHOARQUIVO.mdb"

 

      ‘informa o critério para exibicao dos dados

‘O critério pode estar contido em qualquer controle de texto, inclusive em um listbox (listbox.selecteditem)

        Dim oDA As New OleDb.OleDbDataAdapter("Select CAMPO From TABELA Where CAMPO like '%" & TXTBOX.Text & "%'", oConn)

 

        Dim ds As New DataSet

 

        oDA.Fill(ds)

 

        If ds.Tables(0).Rows.Count > 0 Then

‘indica os campos do formulário onde os dados devem ser escritos

‘observe que você indica o controle de texto (textbox ou label ou combobox onde o dado deve ser escrito

‘Depois você indica entre parentêse o valor de qual campo da tabela você deseja

            LABEL.Text = ds.Tables(0).Rows(0)("CAMPO").ToString()

 

        End If

 

    End Sub


Não se esqueçam de agradecer recomendando o blog.


Abraços

Jacob Samuel