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