domingo, 23 de agosto de 2009

Conexão de dados com visual C# e FireBird parte I

Vamos fazer uma conexão simples. Tenho que dizer que existe muitas maneiras de se fazer uma conexão com o ADO.NET. Tentei aqui apenas dar uma idéia de como fazer, para aqueles que não estão acostumados com ADO.NET. Não usarei nenhum bloco de tratamento de erros Try/Catch ou clausula using(){}. Também não criei nenhum arquivo "app.config" para armezenar a string de conexão muito menos encriptar a string. Penso que o que foi mostrado já dá pra ter uma base.

Para fazermos conexão com o banco de dados FireBird e visual C# precisamos fazer alguns downlods. Alistamos três downloads.

O primeiro download é o próprio banco FireBird:
Clique no link abaixo para baixar o Firebird:

http://sourceforge.net/projects/firebird/files/firebird-win32/2.1.2-Release/Firebird-2.1.2.18118_0_Win32.exe/downloadird/files/firebird-win32/2.1.2-Release/Firebird-2.1.2.18118_0_Win32.exe/downloadd-win32/2.1.2-Release/Firebird-2.1.2.18118_0_Win32.exe/download
Se o download não iniciar na pagina que abrir, clique em "direct link"

O segundo download é o FireBird .Net Data Provider, que contém a dll necessária pra fazer a refêrencia no visual C# o executável a ser baixado é o FirebirdClient-2.5.0.msi.
Clique no link abaixo para baixar o executável FirebirdClient 2.5.0.msi:
Outro download é o IBExpert que é uma interface gráfica para gerenciamento do firebird. Com o IBExpert podemos criar o banco e tabelas tudo com interface gráfica. Porém é necessário que se cadastre e faça login para poder baixar a versão free do IBExpert. siga as instruções do site se cadastre e depois baixe. Não é necessário baixar o IBExpert para criar o banco, pois com firebird isso pode ser feito. Porém é feito em comandos numa janéla como prompt do DOS. E com o IBExpert é mais fácil em modo gráfico. Segue abaixo o link e uma imagem do IBExpert
Clique no linque abaixo para baixar o IBExpert.

Clique nas figuras pra ver em tamanho grande.

Instale todos os downloads. Abra o visual C# e crie um novo projeto windows forms e dê o nome de FireBird. Acrescente um botão e um datagridview no form como mostra a figura.

O próximo passo é adicionar a referência para o fireBird. Para isso clique com o mouse direito no Solution Explorer no nome do projeto ou na pasta References como mostra a figura abaixo.


Irá abrir uma caixa de diálogo Add Reference. Clique em Browse e procure a dll que geralmente é instalada em C:\Arquivos de programas\FirebirdClient, como na figura abaixo.


Para ter certeza de que tudo deu certo clique e abra a pasta "References" e procure pelo FirebirdSql.Data.FirebirdClient, como mostra a figura abaixo.


Pronto depois da referencia adicionada podemos iniciar a conexão. Isso tendo em vista que o banco ja foi criado. Criei um banco de dados chamado BANCOFIREBIRD.FDB, com uma tabela apenas, chamada tabApostolos, com duas colunas. A coluna Codigo e Nome respectivamente.

O primeiro passo é adicionármos a clausula using FirebirdSql.Data.FirebirdClient para podermos criar os data providers . Não podemos esquecer da clausula using System.Data para podermos criar o dataset.

ficará mais ou menos assim:

using System;
using System.Data;
using FirebirdSql.Data.FirebirdClient;
using System.Windows.Forms;
Agora crie uma string do tipo private chamada "strConn" como abaixo.

Essa é a string de conexão. Ela é que vai indicar onde o banco está e que tipo de banco é. Devemos notar que no caso em questão é uma string bem simples
pois não foi declarado usuário e nem senha.

private string strConn = @"DataSource=localhost; Database=C:\PastaFireBird\BANCOFIREBIRD.FDB;";
Veja que para sua string ficar igual a minha terá de criar uma pasta em C: chamada PastaFireBird e criar o banco nessa pasta como nome de BANCOFIREBIRD.FDB. Caso contrário em Database você deverá indicar o caminho de onde foi criado o banco Firebird em seu computador. E se seu banco for criado com usuário e senha deverá ser incluído esses dados na string de conexão. No meu eu criei um banco sem usuário e sem senha o que não é recomendado. O padrão é "Username" = SYSDBA e o campo "Password" = masterkey em minúsculo- esta é a senha inicial do usuário SYSDBA, administrador padrão do banco de dados Firebird.
note que o caracter "@" dispensa o uso das \\ barras para indicar o caminho.
para ver as strings de conexão de vários bancos acesse o site Conections strings no link:
Crie um método do tipo void chamado "AcessaFireBird" para fazer a conexão e acrencente o código como abaixo.

private void AcessaFireBird()
{

FbConnection conn = new FbConnection(strConn);
FbCommand cmd = new FbCommand( "SELECT * FROM tabApostolos" , conn);
FbDataAdapter DA = new FbDataAdapter(cmd);
DataSet DS = new DataSet();
conn.Open();
DA.Fill ( DS, "tabApostolos" );
dataGridView1.DataSource = DS;
dataGridView1.DataMember = "tabApostolos" ;
conn.Close();

}

Agora dê dois cliques no botão e acrescente o código.

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

Veja uma explicação bem básica de cada código abaixo


A classe FbConnection faz a conexão.
Lembre-se que é necessário declarar a string de conexão
no construtor da classe FbConnection en nosso caso strConn.
FbConnection conn = new FbConnection(strConn);
A classe FbCommand executa o camando que é passado pela string de comando.
juntamente com a string de comando é nessesário passar a devida conexão
no nosso caso é a conn. Assim o construtor da classe FbCommand tem
que ter dois argumentos. A string de comando e a conexão.
FbCommand cmd = new FbCommand("SELECT * FROM tabApostolos", conn);
A classe FbDataAdapter com o método fill copia os dados da fonte para o dataset.
No construtor da classe é necessário ter o objeto da classe FbCommand.
lembramos aqui que não é necessário referenciar a conexão na classe
FbDataAdapter pois ela já foi embutida no objeto cmd.
FbDataAdapter DA = new FbDataAdapter(cmd);
Com a classe DataSet será feita a cópia dos dados.
DataSet DS = new DataSet();
Abre a conexão.
conn.Open();
Aqui preenchemos toda a tabela tabApostolos no dataset
através do metodo fill do DataAdapter
DA.Fill(DS, "tabApostolos");
Indica-se o datasource do grid que é o dataset em questão.
dataGridView1.DataSource = DS;
Aqui é indicado o datamenber do grid que é a tabela tabApostolos
dataGridView1.DataMember = "tabApostolos";
Fecha a conexão.
conn.Close();

Agora compile o projeto e clique no botão. E veja se a conexão abre como na figura abaixo.


Bom pessoal é isso ai. Acho que já dá pra ter uma boa idéia de como fazer uma conexão com o FireBird. Se vc achou que o post lhe ajudou, deixe uma mensagem ou se não entendeu algo faça uma pergunta através do blog. É só clicar no título do post e digitar a pergunta.
Um abração.

Disse Jesus: Eu Sou o Caminho e a Verdade e a Vida; ninguém vem ao Pai senão por mim. Jo14:6.




16 comentários:

  1. Masss háaa Biff, boa cara, parabéns.

    ResponderExcluir
  2. E ai Otavino, Como vai? O brigado pelo elogio. Um abração!!

    ResponderExcluir
  3. Olá Biff, amei o artigo de C# e Firebird, vc explica melhor que o nosso prof. Emerson. Só uma dúvida, eu não consegui apresentar aquela lista no datagridview. Se puder me dar um toque agradeço. Meu e-mail é dutpuhl@hotmail.com.
    Desde já agradeço a atenção.
    Grande abraço.
    Dulcimar Cecilia - Várzea Grande/MT

    ResponderExcluir
  4. Claro que posso dar um toque entrarei en contato!

    ResponderExcluir
  5. Gostei do tuto mas em qual classe colocamos esses codigos, na program.cs ou no form.cs ?...valewss

    ResponderExcluir
  6. Olha Paulo na verdade voce pode colocar tanto no form quanto no programa.cs, mas penso que a maneira mais correta seria fazer uma componentização. Isto é criar uma nova classe só para os acessos aos dados. E digitar o código nela e fazer o acesso através dela. Seria criar um metodo com o tipo dataset.

    ResponderExcluir
  7. Boa Noite Biff. Tb estou cursando Unopar... Fiz o trabalho do portifólio mas nao funciona nem quebrando o pc, como todos sabemos, as aulas do professor nao foram muito esclarecedoras, se puder dar uma ajuda ai ... Meu email é pahik_bh@hotmail.com... valew e parabéns pela ajuda ai..

    ResponderExcluir
  8. Oi, sabe se existe outro programa para criar um banco gdb? o ibexpert não funciona comigo...Windows 7.

    ResponderExcluir
  9. Olá Nilson.

    Outra ferramenta gráfica tem sim o Flamerobin, mas nunca usei. POrem Acho que a extensão gbd é o banco interbase da borland. Hoje o firebird está se distanciando cada vez mais do interbase com sua extensão FDB. Tente baixar umam versão mais nova do firebird e quando registrar o banco escolha a versão corrrespondente.

    ResponderExcluir
  10. Graça e paz da parte do Senhor e Salvador Jesus Cristo.

    Irmão, Você coloca estes códigos dentro do formulario? Se tiver como me enviar o projeto pronto vou agradecer muito, pois estou começando agora na programação.

    Nos laços do calvario.
    Cláudio - listmaier@gmail.com

    ResponderExcluir
  11. boa tarde, sei que este tópico é antigo mas estou precisando muito de sua ajuda. Quando eu adiciono a referencia do firebird, aparece junto com a referencia um triagulo amarelo com um ponto de exclamação no meio e o csharp nao reconhece. Tem idéia do que possa ser?
    lucmanograsso@hotmail.com
    abraços

    ResponderExcluir
  12. Caro Biff, tens como me disponibilizar os fontes? emircalife@gmail.com

    ResponderExcluir
  13. Opa, estou querendo desenvolver em Visual Studio para web mas eu tenho vários bancos em FB. Fiz o seu passo a passo e não consegui se puder me passar a fonte deste exemplo seria otimo. Poderia me dar um help sem querer incomodar? meu e-mail é lucsilfreitas@gmail.com

    ResponderExcluir
  14. Opa, estou querendo desenvolver em Visual Studio para web mas eu tenho vários bancos em FB. Fiz o seu passo a passo e não consegui se puder me passar a fonte deste exemplo seria otimo. Poderia me dar um help sem querer incomodar? meu e-mail é lucsilfreitas@gmail.com

    ResponderExcluir
  15. Estou com a seguinte dúvida estou fazendo uma tela de abertura, nessa tela de abertura eu gostaria que aparecesse abaixo o nome da empresa que está licenciada essa informação eu tenho na minha tabela tb_dadosdaempresa , como faço para automaticamente assim que abrir meu formulário de abertura ele carregue a informação,

    ResponderExcluir

free counters