Ir para o conteúdo

Access (Seleccionar, Inserir, Actualizar, Eliminar)

Introdução

O Microsoft Office Access, é um sistema de base de dados que combina o Microsoft Jet Database Engine com uma interface gráfica do utilizador (graphical user interface). O mesmo permite o desenvolvimento rápido de aplicações que envolvem tanto a modelagem e estrutura de dados como também a interface a ser utilizada pelos utilizadores.

Importante: Nos exemplos abaixo eu trabalho com a base de dados Office 2003 (.mdb), caso utilizes a versão 2007 deves trocar a extensão da ConnectionString por .accdb assim como o seu provedor.


.mdb:

Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "BD.mdb"

.accdb:

Dim ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "BD.accdb"

Nota:

Application.StartupPath

Procura directamente no directório da nossa aplicação, mais propriamente na pasta debug. Sendo assim, a minha base de dados está alojada no seguinte directório: AplicaçãobindebugBD.mdb.

Mãos à obra

Nos exemplos abaixo, partes do código não serão explicadas pois presumo que já estejam devidamente aprendidas. Mesmo assim, deixarei algumas referências para outros artigos!

Importante: Antes do Public Class(no source-code) devemos incutir o

Imports System.Data.OleDb

Seleccionar dados (SELECT)

A query SELECT têm por fim obter todos os resultados da base de dados consoante a nossa instrução. Sendo assim, vou demonstrar dois tipos de SELECTs: os resultados todos e um só resultado.

Seleccionar Todos
Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "BD.mdb")
Dim query As String = "SELECT * FROM Clientes"

Dim DataAdapter As New OleDbDataAdapter(query, ConnectionString)
Dim MyData As New DataSet 
DataAdapter.Fill(MyData, "Clientes")

Me.DataGridView1.DataSource = MyData.Tables("Clientes") ' Neste caso utilizei uma datagridview para visualizar os dados
Seleccionar um (com parâmetros)
Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "BD.mdb")
Dim query As String = "SELECT * FROM Clientes WHERE ID = @IDCliente"

Dim command As New OleDbCommand(query, ConnectionString)
' Seleccionar os dados APENAS do cliente 3
command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = 3 

Dim DataAdapter As New OleDbDataAdapter(command)
Dim MyData As New DataSet 
DataAdapter.Fill(MyData, "Clientes")

Me.DataGridView1.DataSource = MyData.Tables("Clientes") ' Neste caso utilizei uma datagridview para visualizar os dados

Inserir dados (INSERT)

A inserção de dados é importante para qualquer aplicação e é muito simples de se fazer!

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "BD.mdb")
Dim query As String = "INSERT INTO Clientes([Nome], [Empresa]) VALUES (@Nome, @Empresa)"

Dim command As New OleDbCommand(query, ConnectionString)

command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextbox.Text
command.Parameters.Add("@Empresa", OleDbType.VarChar).Value = EmpresaTextbox.Text  

ConnectionString.Open()

Dim x As Integer = command.ExecuteNonQuery()

If x < 1 Then
     MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
     MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If

ConnectionString.Close()
command = Nothing

Actualizar (UPDATE)

Qualquer aplicação que utilize base de dados precisa de actualização de dados, seja por parte do utilizador, seja por parte de quem desenvolve a aplicação.

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "BD.mdb")
Dim query As String = "UPDATE Clientes SET [Nome] = @Nome, [Empresa] = @Empresa WHERE ID = @IDCliente"

Dim command As New OleDbCommand(query, ConnectionString)

command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextbox.Text
command.Parameters.Add("@Empresa", OleDbType.VarChar).Value = EmpresaTextbox.Text
' Actualiza apenas os dados do cliente que consta na Textbox
command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = IDClienteTextbox.Text   

ConnectionString.Open()

Dim x As Integer = command.ExecuteNonQuery()

If x < 1 Then
     MessageBox.Show("Erro ao actualizar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
     MessageBox.Show("Actualizado com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If

ConnectionString.Close()
command = Nothing

Eliminar (DELETE)

Por fim, mas não menos importante, resta-nos a eliminação de dados. Ideia: A eliminação que irei exemplificar resume-se a um registo, para múltiplos registos podem ver um artigo que escrevi há algum tempo para o meu blog.

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "BD.mdb")
Dim query As String = "DELETE FROM Clientes WHERE ID = @IDCliente"

Dim command As New OleDbCommand(query, ConnectionString)

' Elimina apenas o cliente que consta na Textbox
command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = IDClienteTextbox.Text   

ConnectionString.Open()

Dim x As Integer = command.ExecuteNonQuery()

If x < 1 Then
     MessageBox.Show("Erro ao eliminar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
     MessageBox.Show("Eliminado com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If

ConnectionString.Close()
command = Nothing

Conclusão

Existe sempre um problema em torno das bases de dados e de como nos devemos comportar com as mesmas, espero, com este artigo, ter sido explícito e útil a quem o ler. As bases de dados são um ponto fulcral na programação.

Referências