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:
string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BD.mdb";
.accdb:
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + "\\BD.mdb";
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ção\bin\debug\BD.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
using 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
OleDbConnection Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BD.mdb");
string query = "SELECT * FROM Clientes";
OleDbDataAdapter DataAdapter = new OleDbDataAdapter(query, Connection);
DataSet MyData = new DataSet();
DataAdapter.Fill(MyData, "Clientes");
this.dataGridView1.DataSource = MyData.Tables["Clientes"]; // Neste caso utilizei uma datagridview para visualizar os dados
Seleccionar um (com parâmetros)
OleDbConnection Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BD.mdb");
string query = "SELECT * FROM Clientes WHERE ID = @IDCliente";
OleDbCommand command = new OleDbCommand(query, Connection);
// Seleccionar os dados APENAS do cliente 3
command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = 3;
OleDbDataAdapter DataAdapter = new OleDbDataAdapter(command);
DataSet MyData = new DataSet();
DataAdapter.Fill(MyData, "Clientes");
this.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!
OleDbConnection Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "BD.mdb");
string query = "INSERT INTO Clientes([Nome], [Empresa]) VALUES (@Nome, @Empresa)";
OleDbCommand command = new OleDbCommand(query, Connection);
command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextbox.Text;
command.Parameters.Add("@Empresa", OleDbType.VarChar).Value = EmpresaTextbox.Text;
Connection.Open();
int x = command.ExecuteNonQuery();
if (x < 1)
{
MessageBox.Show("Erro ao inserir", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("Registo inserido com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Connection.Close();
command = null;
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.
OleDbConnection Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BD.mdb");
string query = "UPDATE Clientes SET [Nome] = @Nome, [Empresa] = @Empresa WHERE ID = @IDCliente";
OleDbCommand command = new OleDbCommand(query, Connection);
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;
Connection.Open();
int x = command.ExecuteNonQuery();
if (x < 1)
{
MessageBox.Show("Erro ao actualizar", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("Actualizado com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Connection.Close();
command = null;
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.
OleDbConnection Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BD.mdb");
string query = "DELETE FROM Clientes WHERE ID = @IDCliente";
OleDbCommand command = new OleDbCommand(query, Connection);
// Elimina apenas o cliente que consta na Textbox
command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = IDClienteTextbox.Text;
Connection.Open();
int x = command.ExecuteNonQuery();
if (x < 1)
{
MessageBox.Show("Erro ao eliminar", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("Eliminado com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Connection.Close();
command = null;
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.