Olá apaixonados por sistemas computacionais!! E principalmente apaixonados por C#!! Um pouco cedo demais para outro artigo?!?!
Ontem um amigo ?telefonou-me? (depois eu explico para ele que existem meios mais econômicos de se falar com alguém!! kk brincadeirinha :-P), sua dúvida girava em torno de como realizar a conexão com uma base de dados Firebird no C#, e é sobre isto que se trata este artigo. Bem o Firebird dispensa comentários, eu mesmo utilizo-o em projetos comerciais, e devo dizer que até a data atual não passei por nenhuma “saia justa”.
Para realizar esta conexão utilizaremos o Firebird .NET Data Provider que pode ser obtido diretamente no site do Firebird, no final do artigo será apresentado o endereço do download. No site você encontrará várias versões, é necessário que você instale a versão 2.5.0 Beta para .NET 3.5/2.0, um conselho que dou é para você baixar o pacote zipado com os binários e descompactar os arquivos diretamente para a pasta C:\\Windows\\Microsoft.NET\\Framework. Agora ao projeto!!
No Visual Studio 2008 crie um novo projeto [Ctrl + Shift + N] Visual C#/Windows/ Windows Forms Application, e mude o nome do projeto para ConectFirebird.
figura 01 – Criando o projeto.
figura 2 – Adicionar referencia ao projeto.
Na tela seguinte vá para a aba Browse e localize o arquivo Firebird.Data.FirebirdClient.dll.
figura 3 – Localizando o arquivo Firebird.Data.FirebirdClient.dll.
Bem agora vamos começar a programar. No Solution Explorer localize o arquivo Program.cs, eu uso este arquivo para criar minhas “VARIÁVEIS GLOBAIS” (kk), na realidade eu crio uma classe publica e estática, é só um artifício que me auxilia muito. Vejam a imagem abaixo e logo em seguida eu explicarei cada uma das alterações realizadas.
figura 4 – Arquivo Program.cs.
Vamos à explicação dos códigos acrescentados:
1º) Neste ponto eu estou incluindo a referência à biblioteca que nos permitirá acessar os métodos necessários para conectar com uma base Firebird.
2º) Esta é a classe que representará a minha conexão com o banco de dados, o motivo é fazer com que eu utilize somente uma conexão no programa por completo, não é a única forma de fazer isto,mais o artigo é teu ou é meu?? (kkk brincadeirinha!!), perceba que ela é bem simples, eu deixo de forma estática os dados referentes ao usuário, senha, banco de dados dentre outros. Você é livre para alterar/melhorar esta classe conforme suas necessidades. Descrevendo rapidamente temos:
Connection é o nome da minha classe.
FbConnection é o tipo de variável que realiza a conexão com o meu banco de dados.
FbCommandBuilder é o tipo de variável que recebe uma conexão e executa uma sentença SQL. (Ps.: esta variável não vai ser utilizada agora, mais é mais fácil eu digitar esta mensagem do que mudar a imagem. :-P), você não precisa criar esta variável.
Por medida de controle eu criei somente os métodos Get das variáveis fbConn e fbCmm. Logo em seguida crie um método que será responsável pela conexão com o banco de dados, acredito que o código seja auto-explicativo.
3º) Neste ponto eu chamo o método Connection.Active(true) para realiza a conexão com o meu banco de dados e faço um tratamento para o caso de ocorrer alguma exceção. A partir deste ponto qualquer classe do sistema poderá acessar as propriedades e os métodos da classe Connection para tratar o banco de dados.
4º) E finalmente eu fecho a minha conexão, lembrando que o sistema só executará esta linha quando estiver sendo finalizado.
Bem, agora vamos modificar o nosso formulário, adicione um componente DataGridView e mude o seu nome para “grid” e ajuste-o de modo a que se pareça com a figura a seguir.
figura 5 – Formulário da aplicação.
Vamos agora ao Firebird, use o seu gerenciador preferido, pode ser qualquer um que lhe permita realizar algumas tarefas, crie uma tabela seguindo o script abaixo.
CREATE TABLE "AGENDA"
(
"ID" INTEGER NOT NULL,
"NOME" VARCHAR(60) NOT NULL,
"TELEFONE" VARCHAR(12) NOT NULL,
PRIMARY KEY ("ID")
);
Execute este scrip também, para termos dados na tabela.
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(01,'FULANO DOS ANZOIS','86.1111-1111');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(02,'CICRANO CELESTINO','86.2222-2222');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(03,'BELTRANO','86.3333-3333');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(04,'NINGUEM','86.4444-4444');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(05,'AQUÉM','86.5555-5555');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(06,'LULA','86.6666-6666');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(07,'COLLOR','86.7777-7777');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(08,'MÃO SANTA','86.8888-8888');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(09,'TIAO','86.9999-9999');
INSERT INTO AGENDA(ID,NOME,TELEFONE)VALUES(10,'TIRIRICA','86.0000-0000');
Agora voltando ao projeto, vamos criar uma classe para termos acesso a esta tabela. No Solution Explorer clique no seu projeto com o botão direito do mouse e selecione Add../Class..
figura 6 – Adicionando uma nova classe ao projeto.
Renomeie a classe para clAgenda.cs conforme a figura a seguir.
figura 7 – Adicionando a classe clAgenda.cs.
Mais um pouco de codificação:
figura 8 – Classe da tabela AGENDA.
Esta classe está bem simples, perceba que eu não realizo verificações, tipo se a tabela existe, mais como já havia dito anteriormente você pode (DEVE) criar em cima deste MODELO que estou lhes passando. Considero este código bastante trivial, por isso vou explicar somente o método Open() desta classe:
Neste método eu crio uma objeto do tipo FbCommand, logo em seguida na propriedade Connection deste objeto eu atribuo o valor passado pela chamada do método. Na propriedade CommandText eu atribuo a sentença SQL cujo método ExecuteReader() me retorna um DataReader e eu atribuo diretamente para o retorno do método.
Agora vá até o formulário em modo Design, selecione o formulário e no evento Load acrescente o código a seguir.
figura 9 – Código a ser acrescentado no formulário do sistema.
Vamos à uma breve descrição destas alterações:
1º) Eu digo ao sistema que desejo utilizar a biblioteca do Firebird.
2º) Eu crio um objeto do tipo clAgenda onde eu possuo as propriedades e os métodos de acesso à tabela de AGENDA.
3º) Finalmente eu crio um objeto do tipo DataTable que receberá o FbDataReader que é retornado no momento em que eu executo o método tblAgenda .Open(Connection.FbCnn) .
Bem agora podemos executar o nosso projeto e se a base de dados e a tabela AGENDA existirem e o servidor do Firebird estiver rodando (uffa!!) você verá a seguinte tela:
figura 10 – Sistema concluído e executando.
E pronto, agora você já pode usar o Firebird nos seus projetos para a plataforma .NET com o C#, com o modelo apresentado você poderá desenvolver um CRUD completo para sua base de dados.
Obs.: No endereço abaixo você obtém o Firebird .NET Data Provider utilizado neste artigo:
http://downloads.sourceforge.net/firebird/FirebirdSql.Data.FirebirdClient-2.5.0-Beta1.zip
Espero que tenham gostado, estou aberto a sugestões e críticas (desde que construtivas. Ok!! :-P), podem até mesmo me solicitar artigos sobre o que desejam saber, só peço pela paciência de vocês (lembrando que outro feriado que nem este só no próximo ano :-P).
Até a próxima!!