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:

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.

Referências