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:
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