C# - Acessando FireBird em uma aplicação Windows Forms


Vou mostrar como acessar o FireBird 2.0 usando a linguagem C# em uma aplicação Windows Forms.

Firebird é um banco de dados relacional que oferece recursos ANSI SQL-99 que rodam no Linux, Windows e plataformas Unix. Ele oferece alta performance e uma linguagem poderosa para procedimentos e triggers.

Você pode fazer o download do FireBird em : http://www.firebirdsql.org/

Durante sua instalação, será possível escolher entre 2 arquiteturas distintas. Cada uma delas possui seus prós e contras, sendo que a escolha entre uma ou outra, pode variar de acordo com a situação ou a configuração do ambiente no qual o servidor Firebird será alocado. As arquiteturas disponíveis são: Classic Server e Superserver.

Após o download basta instalar seguindo as instruções.

Você deve instalar também o Firebird .NET Data Provider  em: Data Provider for .NET Framework 2.0 (.exe) (331kb)   para realizar a conexão usando a plataforma .NET.

Com tudo instalado já podemos começar a criar o projeto...

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 fireBirdWin 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 duas referências no nosso projeto:

  1. FirebirdSql.Data.FirebirdClient - Para termos acesso as classes de acesso a dados  FireBrid;
  2. System.Configuration - Para podermos acessar a string de conexão do FireBird no arquivo App.Config;

Clique com o botão direito do mouse sobre o projeto e selecione Adicionar Referência;

Em seguida selecione a referência FirebirdSql.Data.FirebirdClient;

Ainda na mesma janela 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 FireBird do nosso exemplo onde estamos acessando o banco de dados Employee com o usuário SYSDBA e a senha padrão masterkey; (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="FireBirdConnectionString"
		     connectionString="DataSource=localhost; Database=C:\dados\EMPLOYEE.FDB; UserId=SYSDBA; Pwd=masterkey" />
	</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 daoFireBird onde iremos usar o padrão Singleton para obter uma única instância da conexão com o FireBird;

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

A seguir digite o código abaixo para esta classe:

using System;
using FirebirdSql.Data.FirebirdClient;
using System.Configuration;

namespace fireBirdWin
{
	/// <summary>
	/// Usa padrão Singleton para obter uma instancia do FireBird
	/// </summary>
	public class daoFireBird
	{
		private static readonly daoFireBird instanciaFireBird = new daoFireBird();
			
		private daoFireBird(){	}
			
		public static daoFireBird getInstancia()
		{
			return instanciaFireBird;
		}
		
		public FbConnection getConexao()
		{
			string conn = ConfigurationManager.ConnectionStrings["FireBirdConnectionString"].ToString();
			return new FbConnection(conn);
		}
	}
 }

Observe que o construtor da classe é marcado como private e desta forma se tentarmos usar o operador new com essa classe teremos um erro;

Somente a própria classe terá acesso a este método e é o que ela faz na linha de código :

private static readonly daoFireBird instanciaFireBird = new daoFireBird();

usando o operador new.

O atributo instanciaFireBird é obtido via método getInstancia que é do tipo da classe; Este método retornará sempre o mesmo objeto.

Nota: Para saber mais sobre o padrão Singleton veja o meu artigo:  O padrão Singleton

No formulário mainform.cs inclua um componente DataGridView e um componente MenuStrip e 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 FirebirdSql.Data.FirebirdClient;
using System.Data;
using System.Configuration;

No evento Load do formulário inclua o método acessoFBSingleton() que irá será usado para acessar o FireBird;

void MainFormLoad(object sender, EventArgs e)
{
	acessoFBSingleton();
}

A seguir temos o método acessoFB que realiza um acesso do modo tradicional e que não será usado no projeto.

public void acessoFB()
{
       string strConn = ConfigurationManager.ConnectionStrings["FireBirdConnectionString"].ToString();
        FbConnection fbConn = new FbConnection(strConn);
  	       		      
        FbCommand fbCmd = new FbCommand("Select * from EMPLOYEE",fbConn);
  		      
        try
        {
        fbConn.Open();
        
        FbDataAdapter fbDa = new FbDataAdapter(fbCmd);
      DataTable dtEmployee = new DataTable();
      fbDa.Fill(dtEmployee);
		      
      dataGridView1.DataSource = dtEmployee;
      }
      catch (FbException fbex)
      {
      	MessageBox.Show("Erro ao acessar o FireBird " + fbex.Message,"Erro");
      }
      finally
      {
      	fbConn.Close();
      }
  }

A rotina acessoFBSingleton efetua o acesso usando o padrão Singleton:

public void acessoFBSingleton()
{
    using (FbConnection conexaoFireBird = daoFireBird.getInstancia().getConexao())
    {
	try
	{
	conexaoFireBird.Open();

             string mSQL = "Select * from Employee";
				
	FbCommand cmd = new FbCommand(mSQL,conexaoFireBird);
	FbDataAdapter da = new FbDataAdapter(cmd);
				
	DataTable dtEmployee = new DataTable();
             da.Fill(dtEmployee); 
             this.dataGridView1.DataSource = dtEmployee;
	}
	catch (FbException fbex)
	{
		MessageBox.Show("Erro de acesso ao MySQL : " + fbex.Message,"Erro");
	}
	finally
	{
		conexaoFireBird.Close();
	}
}

Após obter a instância do FireBird efetuamos a conexão e usando um DataAdapter preenchemos um DataTable para exibir o resultado no DataGridView;

E com isso acabamos de acessar o FireBird em uma aplicação Windows Forms usando o padrão Singleton e obtendo a string de conexão do arquivo de configuração app.config.

Pegue o projeto completo aqui: daoFireBird..zip

Referências:


José Carlos Macoratti