Você está na página 1de 10

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

 Armazenar a string de conexão no arquivo App.Config;


 Recuperar a string de conexão do arquivo App.Config;
 Como acessar FireBird através de uma consulta SQL;
 Usar o padrão Singleton para obter somente uma instãncia da
conexão FireBird;
 Acessar os dados da tabela usando um DataTable ao invés de um
DataSet;
 Exibir os dados em um controle DataGridView;

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:

 Comunidade Firebird de Lingua Portuguesa - Downloads


 http://www.firebirdsql.org/
 Conexão com o FireBird 1.5
 Acessando e mantendo dados no FireBird Embarcado
 Acessando o FireBird
 Criando uma conexão Genérica com banco de dados
 VB 2005 com Firebird - MONO no Linux
 VB.NET - Acessando o FireBird.

José Carlos Macoratti

Você também pode gostar