C#
- Acessando Ms Access em uma aplicação Windows Forms
Vou mostrar como acessar o MS Access usando a linguagem C#.
Vou usar o banco de dados Northwind.mdb, e, se você ainda não tem pode baixá-lo aqui:
Após o fazer o download você pode criar uma pasta no drive C: com o nome dados e copiar nela o arquivo.
Desta forma teremos o seguinte caminho para o banco de dados : c:\dados\Northwind.mdb. Este será o caminho usado no exemplo do artigo , se você desejar alterar altere também o caminho na string de conexão.
Criando o projeto no SharpDevelop 2.2
Vamos criar uma nova solução C# usando o SharpDevelop 2.2 (você pode usar o Visual C# Express Edition) com o nome daoAccess através do menu Arquivo -> Novo -> Solução , selecionando o Modelo Aplicação Windows.
![]() |
Neste projeto eu vou mostrar
Como você pode notar , um projeto muito simples pode nos ensinar muitas coisas...
Antes de iniciar vamos incluir uma referência no nosso projeto:
Clique com o botão direito do mouse sobre o projeto e selecione Adicionar Referência;
Selecione a referência System.Configuration;
![]() |
Clique no botão OK;
Vamos criar um arquivo App.Config para podermos armazenar a string de conexão.
Clique com o botão direito do mouse sobre o projeto e selecione Adicionar -> Novo Item;
Na janela Nova Arquivo , selecione Misc e App.Config e clique em Criar;
![]() |
Inclua o código destacado em negrito referente a string de conexão para o Ms Access do nosso exemplo onde estamos acessando o banco de dados Northwind.mdb localizado na pasta c:\dados; (Você pode alterar a senha a seu critério);
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <!-- Example connection to a SQL Server Database on localhost. --> <!-- <add name="ExampleConnectionString" connectionString="Data Source=.;Initial Catalog=DBName;Integrated Security=True" providerName="System.Data.SqlClient" /> --> <add name="AccessConnectionString" connectionString="Provider=Microsoft.JET.OLEDB.4.0;data source=c:\dados\Northwind.mdb" /> </connectionStrings> <appSettings> <!-- access these values via the property: System.Configuration.ConfigurationManager.AppSettings[key] --> <add key="Setting1" value="Very" /> <add key="Setting2" value="Easy" /> </appSettings> </configuration> |
Vamos agora criar uma classe chamada daoAccess onde iremos usar o padrão Singleton para obter uma única instância da conexão com o Ms Access;
Clique com o botão direito sobre o projeto e selecione Adicionar -> Novo Item;
A seguir selecione C# e em modelo selecione Classe informando o nome daoAccess;
A seguir digite o código abaixo para esta classe:
using System;
using System.Data.OleDb;
using System.Configuration;
namespace daoAccess
{
/// <summary>
/// Acesso a um banco de dados Microsoft Access
/// usando o padrão Singleton
/// </summary>
public class daoAccess
{
private static readonly daoAccess instanciaAccess = new daoAccess();
private daoAccess(){ }
public static daoAccess getInstancia()
{
return instanciaAccess;
}
public OleDbConnection getConexao()
{
string conn = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ToString();
return new OleDbConnection(conn);
}
}
}
|
No formulário mainform.cs inclua um componente ListBox e um componente Button defina a opção Sair conforme o leiaute abaixo;
![]() |
Agora defina os namespaces que iremos usar neste formulário :
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Data.OleDb; using System.Data; |
No evento Load do formulário temos a chamada da rotina initMsAccessSingleton();
void MainFormLoad(object sender, EventArgs e)
{
initMsAccessSingleton();
}
|
O código da rotina initMsAccessSingleton() esta abaixo e usa um DataSet para preencher um DataAdapter e assim exibir o nome da empresa no ListBox através de um laço foreach;
public void initMsAccessSingleton()
{
using (OleDbConnection conexaoAccess = daoAccess.getInstancia().getConexao())
{
try
{
conexaoAccess.Open();
// cria o dataset
DataSet ds = new DataSet();
// cria o adapter e preenche o dataset
OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from Customers", conexaoAccess);
adapter.Fill(ds);
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows) {
listBox1.Items.Add(dr["CompanyName"].ToString());
}
}
catch (OleDbException oledbex)
{
MessageBox.Show("Erro de acesso aos dados " + oledbex.Message,"Erro");
}
finally
{
//fecha a conexao
conexaoAccess.Close();
}
}
}
|
Executando o projeto iremos obter o ListBox preenchido conforme a figura abaixo;
![]() |
A pegue o projeto completo aqui:
daoAccess.zip
Eu sei é apenas C# mas eu gosto...
![]()
Referências:
José Carlos Macoratti