Neste artigo mostrarei como utilizar bancos de dados Firebird, MySQL e PostgreSQL no Windows Forms. Em cada um dos bancos foram utilizados os providers de acesso a dados do próprio fabricante.

Pré-Requisitos:

Criando o banco de dados

Primeiramente iremos criar o banco de dados em cada um dos bancos, na Listagem 01 está o comando SQL para criação do banco de dados. O nome da base de dados que coloquei foi dados. Obs.: Infelizmente está fora do escopo do artigo mostrar a utilização dos bancos de dados, e também tornaria o artigo muito extenso. Então mostrarei apenas os comandos SQL que foram utilizados.

CREATE DATABASE dados

Listagem 01. Criação da base de dados.

Criando a tabela dos bancos

Agora com os bancos criados, iremos criar a tabela tab_clientes, na Listagem 02 está o comando SQL de criação da tabela e seus respectivos campos (clientes_id (chave primária) e clientes_nome).

CREATE TABLE tab_clientes (
 clientes_id INTEGER NOT NULL PRIMARY KEY,
 clientes_nome CHAR(50));

Listagem 02. Criação da tabela de clientes.

Inserindo dados na tabela

Neste momento, após a criação da tabela, vamos inserir um registro para cada banco (PostgreSQL, Firebird e MySQL, respectivamente), ver a Listagem 3.

INSERT INTO tab_clientes (clientes_id, clientes_nome)
 VALUES (1, ‘banco postgree’);
  
 INSERT INTO tab_clientes (clientes_id, clientes_nome)
 VALUES (1, ‘banco firebird’);
  
 INSERT INTO tab_clientes (clientes_id, clientes_nome)
 VALUES (1, ‘banco mysql’);

Listagem 03. Inserção de registro nos bancos de dados.

Iniciando o Visual Studio 2005

Agora, iremos abrir, o Visual Studio 2005 (chamarei de VS2005), através do Menu Iniciar -> Todos os Programas -> Microsoft Visual Studio 2005 -> Microsoft Visual Studio 2005, ver na Figura 01 a tela inicial do VS2005.

dgbubsvswsfig01.jpg

Figura 01. Tela inicial do VS2005.

Criando o projeto

Agora criaremos o nosso projeto através do Menu File -> New -> Project, logo após abrirá a janela New Project. Utilizei a linguagem C# (lê-se C Sharp), então escolheremos na parte superior esquerda a linguagem Visual C# e depois Windows, em Templates clicamos em Windows Application, agora abaixo no campo Name, colocamos o nome do projeto como ConectandoBancosFree (sem espaço), e clicamos no botão OK. Ver na Figura 02 a janela New Project, com as informações que citei mostrado por um quadro vermelho.

dgbubsvswsfig02.jpg

Figura 02. Janela New Project

Adicionando referência ao projeto

Agora iremos referenciar os arquivos necessários (DLLs) para acesso a dados. A referência é feita através do Menu Project -> Add Reference, logo após aparecerá a janela Add Reference, ver Figura 03.

dgbubsvswsfig03.jpg

Figura 03. Janela Add Reference.

Agora, levando em conta que os providers dos bancos já estão instalados (caso negativo acesse os links no inicio do artigo baixe e instale), vamos referenciar as DLLs, clicando na aba Browse, e indo até a pasta que estão as DLLs, abaixo na Listagem 04 estão as DLLs e caminho onde estão localizadas.

Firebird
 FirebirdSql.Data.FirebirdClient.dll (C:\Arquivos de programas\FirebirdClient 2.0\)
  
 PostgreSQL (não possui caminho padrão, pois o arquivo é descompactado em uma pasta).
 Mono.Security.dll
 Npgsql.dll
  
 MySQL 
 MySql.Data.dll (C:\Arquivos de programas\MySQL\MySQL Connector Net 5.0.7\Binaries\.NET 2.0)

Listagem 04. Caminho dos Data Providers dos Bancos.

Montando o layout do formulário

Criaremos agora toda estrutura do nosso formulário, colocaremos 3 buttons e 3 dataGridView, na Figura 04 mostra como ficará nosso formulário, e na Tabela 01 está as propriedades utilizadas de cada componente.

dgbubsvswsfig04.jpg

Figura 04. Formulário com os componentes utilizados.

Componente

Propriedade

Valor

Button1

Text

Ler MySQL

Button2

Text

Ler Firebird

Button3

Text

Ler Postgree

Tabela 01. Configuração das propriedades dos componentes.

Criando a classe Global.cs

Agora começaremos a codificar nosso projeto, iniciaremos criando uma classe (Menu Project -> Add Class...) de nome Global.cs que será responsável por armazenar a string de conexão de cada banco de dados. Na Listagem 05 está o código da classe criada.

class Global
     {
         public static string cnmysql = "database = dados; data source = localhost; user id = root; password =";
   public static string cnfirebird = "User=SYSDBA; Password = masterkey; Database = C:\\Documents and Settings\\Diego\\Dados de aplicativos\\HK-Software\\IBExpert\\dados.fdb; DataSource = localhost; Dialect=3; Charset=WIN1252; Role=; Connection lifetime=15; Pooling=true; MinPoolSize=0; MaxPoolSize=50; Packet Size=4096; ServerType=0";
         public static string cnpostgree = "User ID=postgres;Password=;Host=localhost;Port=5432;Database=dados;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0"; 
     }

Listagem 05. Codificação da classe Global.cs.

Criando a classe Clientes.cs

Agora criaremos a classe Clientes.cs que conterá a codificação para leitura dos bancos de dados, primeiramente adicionaremos os namespaces correspondentes para acesso aos bancos, conforme a Listagem 06.

using MySql.Data.MySqlClient; //NAMESPACE DO MYSQL
 using FirebirdSql.Data.FirebirdClient; //NAMESPACE DO FIREBIRD
 using Npgsql.Web; //NAMESPACE DO POSTGRESQL

Listagem 06.

Após inserir os namespaces, vamos codificar o acesso a cada banco através do comando SQL Select, a Listagem 07 mostra a codificação necessária.

class Clientes
     {
  
         public static DataSet LoadMySQL()
         {
             DataSet dts = new DataSet();
             using (MySqlConnection cnn = new MySqlConnection(Global.cnmysql))
             {
                 string sql = "select * from tab_clientes";
                 MySqlDataAdapter dtAdapter = new MySqlDataAdapter(sql, cnn);
                 dtAdapter.Fill(dts, "tab_clientes");
             }
             return dts;
         }
  
         public static DataSet LoadFirebird()
         {
             DataSet dts = new DataSet();
             using (FbConnection cnn = new FbConnection(Global.cnfirebird))
             {
                 string sql = "select * from tab_clientes";
                 FbDataAdapter dtAdapter = new FbDataAdapter(sql, cnn);
                 dtAdapter.Fill(dts, "tab_clientes");
             }
             return dts;
         }
  
         public static DataSet LoadPostgree()
         {
             DataSet dts = new DataSet();
             using (Npgsql.NpgsqlConnection cnn = new Npgsql.NpgsqlConnection(Global.cnpostgree))
             {
                 string sql = "select * from tab_clientes";
                 Npgsql.NpgsqlDataAdapter dtAdapter = new Npgsql.NpgsqlDataAdapter(sql, cnn);
                 dtAdapter.Fill(dts, "tab_clientes");
             }
             return dts;
         }
     }

Listagem 07. Codigicação da classe Clientes.cs.

Criando Eventos

Agora criaremos três eventos, cada um para carregar os dataGriView com os dados do banco. A Listagem 08 mostra a codificação.

private void loadMySQLClientes()
 {
     this.dataGridView1.DataSource = Clientes.LoadMySQL();
     this.dataGridView1.DataMember = "tab_clientes";
 }
  
 private void loadFirebirdClientes()
 {
     this.dataGridView2.DataSource = Clientes.LoadFirebird();
     this.dataGridView2.DataMember = "tab_clientes";
 }
  
 private void loadPostgreeClientes()
 {
     this.dataGridView3.DataSource = Clientes.LoadPostgree();
     this.dataGridView3.DataMember = "tab_clientes";
 }

Codificando o Button1

Agora começaremos a codificar os botões, no button1 codificaremos para leitura do banco MySQL, agora basta em cada botão chamar o evento criado, na Listagem 09, está a codificação do botão (evento Click).

private void button1_Click(object sender, EventArgs e)
 {
      loadMySQLClientes();
 }

Listagem 09. Codificando Button1.

Codificando o Button2

Agora codificaremos o button2 para leitura do banco Firebird, na Listagem 10, está a codificação do botão (evento Click).

private void button2_Click(object sender, EventArgs e)
 {
      loadFirebirdClientes();
 }

Listagem 10. Codificando Button2.

Codificando o Button3

Agora codificaremos o button3 para leitura do banco PostgreSQL, na Listagem 11, está a codificação do botão (evento Click).

private void button3_Click(object sender, EventArgs e)
 {
      loadFirebirdClientes();
 }

Listagem 11. Codificando Button3.

Executando e testando o projeto

Agora iremos testar nosso projeto, na Figura 05, mostra o projeto em execução.

dgbubsvswsfig05.jpg

Figura 05. Projeto em execução.

Pudemos notar que a codificação dos bancos de dados são bem semelhantes e simples de serem implementadas.

Em caso de dúvida só entrar em contato. Um grande abraço a todos e até o próximo artigo.