Ferramentas de Usuário

Ferramentas de Site


dev_net:csharp:access

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.

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";

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!

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.

A eliminação que irei exemplificar resume-se a um registo, para múltiplos registos podem ver um artigo que escrevi à 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.

Artigo escrito por bioshock

Traduzido de VB.NET para C# por por Caça

Referências

dev_net/csharp/access.txt · Última modificação em: 2018/05/14 21:37 (edição externa)