conexão de dados com visual c# e firebird

Upload: savio-sales

Post on 09-Jul-2015

975 views

Category:

Documents


1 download

TRANSCRIPT

Conexo de dados com visual C# e FireBird parte IVamos fazer uma conexo simples. Tenho que dizer que existe muitas maneiras de se fazer uma conexo com o ADO.NET. Tentei aqui apenas dar uma idia de como fazer, para aqueles que no esto acostumados com ADO.NET. No usarei nenhum bloco de tratamento de erros Try/Catch ou clausula using(){}. Tambm no criei nenhum arquivo "app.config" para armezenar a string de conexo muito menos encriptar a string. Penso que o que foi mostrado j d pra ter uma base. Para fazermos conexo com o banco de dados FireBird e visual C# precisamos fazer alguns downlods. Alistamos trs downloads. O primeiro download o prprio banco FireBird: Clique no link abaixo para baixar o Firebird: http://sourceforge.net/projects/firebird/files/firebird-win32/2.1.2-Release/Firebird2.1.2.18118_0_Win32.exe/downloadird/files/firebird-win32/2.1.2-Release/Firebird2.1.2.18118_0_Win32.exe/downloadd-win32/2.1.2-Release/Firebird-2.1.2.18118_0_Win32.exe/download Se o download no iniciar na pagina que abrir, clique em "direct link" O segundo download o FireBird .Net Data Provider, que contm a dll necessria pra fazer a refrencia no visual C# o executvel a ser baixado o FirebirdClient-2.5.0.msi. Clique no link abaixo para baixar o executvel FirebirdClient 2.5.0.msi: http://sourceforge.net/projects/firebird/files/firebird-net-provider/2.5.0/FirebirdClient-2.5.0.msi/download Se o download no iniciar na pagina que abrir, clique em "direct link" Outro download o IBExpert que uma interface grfica para gerenciamento do firebird. Com o IBExpert podemos criar o banco e tabelas tudo com interface grfica. Porm necessrio que se cadastre e faa login para poder baixar a verso free do IBExpert. siga as instrues do site se cadastre e depois baixe. No necessrio baixar o IBExpert para criar o banco, pois com firebird isso pode ser feito. Porm feito em comandos numa janla como prompt do DOS. E com o IBExpert mais fcil em modo grfico. Segue abaixo o link e uma imagem do IBExpert Clique no linque abaixo para baixar o IBExpert. http://www.firebase.com.br/fb/downloads.php?id=97

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 boto e um datagridview no form como mostra a figura.

O prximo passo adicionar a referncia 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 dilogo 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 conexo. 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 adicionrmos a clausula using FirebirdSql.Data.FirebirdClient para podermos criar os data providers . No podemos esquecer da clausula using System.Data para podermos criar o dataset. ficar mais ou menos assim: using using using using System; System.Data; FirebirdSql.Data.FirebirdClient; System.Windows.Forms;

Agora crie uma string do tipo private chamada "strConn" como abaixo. Essa a string de conexo. Ela que vai indicar onde o banco est e que tipo de banco . Devemos notar que no caso em questo uma string bem simples pois no foi declarado usurio 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 contrrio em Database voc dever indicar o caminho de onde foi criado o banco Firebird em seu computador. E se seu banco for criado com usurio e senha dever ser includo esses dados na string de conexo. No meu eu criei um banco sem usurio e sem senha o que no recomendado. O padro "Username" = SYSDBA e o campo "Password" = masterkey em minsculo- esta a senha inicial do usurio SYSDBA, administrador padro do banco de dados Firebird. note que o caracter "@" dispensa o uso das \\ barras para indicar o caminho. para ver as strings de conexo de vrios bancos acesse o site Conections strings no link: http://www.connectionstrings.com/ http://www.connectionstrings.com/firebird Crie um mtodo do tipo void chamado "AcessaFireBird" para fazer a conexo e acrencente o cdigo 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 boto e acrescente o cdigo. private void button1_Click(object sender, EventArgs e) { AcessaFireBird(); } Veja uma explicao bem bsica de cada cdigo abaixo

A classe FbConnection faz a conexo. Lembre-se que necessrio declarar a string de conexo 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 nessesrio passar a devida conexo no nosso caso a conn. Assim o construtor da classe FbCommand tem que ter dois argumentos. A string de comando e a conexo. FbCommand cmd = new FbCommand("SELECT * FROM tabApostolos", conn); A classe FbDataAdapter com o mtodo fill copia os dados da fonte para o dataset. No construtor da classe necessrio ter o objeto da classe FbCommand. lembramos aqui que no necessrio referenciar a conexo na classe FbDataAdapter pois ela j foi embutida no objeto cmd. FbDataAdapter DA = new FbDataAdapter(cmd); Com a classe DataSet ser feita a cpia dos dados. DataSet DS = new DataSet(); Abre a conexo. conn.Open();

Aqui preenchemos toda a tabela tabApostolos no dataset atravs do metodo fill do DataAdapter DA.Fill(DS, "tabApostolos"); Indica-se o datasource do grid que o dataset em questo. dataGridView1.DataSource = DS; Aqui indicado o datamenber do grid que a tabela tabApostolos dataGridView1.DataMember = "tabApostolos"; Fecha a conexo. conn.Close(); Agora compile o projeto e clique no boto. E veja se a conexo abre como na figura abaixo.

Conexo de dados com visual C# e FireBird parte II (trabalho unopar)Bem! Antes de mais nada quero aqui deixar claro que no tenho o objetivo de mostrar a melhor maneira ou a forma correta de fazer um programa de acesso a dados. Espero que o que seja escrito seja sufiente para se entender as classes bsicas do ADO.NET responsveis pela conexo com o banco de dados. Volto a dizer que existem muitas maneiras de se fazer isso. Tambm no fiz nenhum tratamento de exessoes try/catch/finally. Ou usado a clausula using(){}. Se vc no se lembra como referenciar o data Provider FirebirdClient veja a primeira parte Conexo de dados com visual C# e FireBird . Acrescente no form 04 buttons, 01 datagridview, 02 Label e 02 textbox. Eu coloquei um groupbox simplesmente por questo esttica. Veja como ficou o form.

A primeira coisa que vamos fazer criar a string de conexo. Ela ser usada em todos os mtodos que fazem a conexo com o firebird. private string strConn = "User=SYSDBA;Password=masterkey;" + @"Database=C:\PastaFireBird\BANCOFIREBIRD.FDB;" + "DataSource=localhost;Port=3050;" + "Dialect=3;Charset=NONE;Role=;" + "Connection lifetime=0;" + "Connection timeout=15;" + "Pooling=True;Packet" + " Size=8192;Server Type=0"; Se sua string de conexo for dividida em mais de uma linha como foi meu caso nunca esquea do operador '+' se no dar um erro. No esquea o @ dispensa \\. Vamos criar um metodo void para lipar as caixa de texto assim que gravarmos ou alterarmos os dados. public void limpaTbx() {

textBox1.Text = ""; textBox2.Text = ""; } Vamos criar um metodo tipo void para acessar o banco o mesmo que foi feito no primeiro artigo. public void acessar() { string sqlSelecionar = "Select * From tabApostolos"; FbConnection conn = new FbConnection(strConn); FbCommand cmd = new FbCommand(sqlSelecionar, conn); FbDataAdapter dataApt = new FbDataAdapter(cmd); DataSet DS = new DataSet(); conn.Open(); dataApt.Fill(DS,"tabApostolos"); dataGridView1.DataSource = DS; dataGridView1.DataMember = "tabApostolos"; conn.Close(); } Vamos criar outro mtodo para incluir dados no banco. public void incluir() { string sqlIncluir = "INSERT INTO tabApostolos (Codigo, nome)" + "Values ( ' " + textBox1.Text + " ' ,' " + textBox2.Text + " ' )"; FbConnection conn = new FbConnection(strConn); FbCommand cmd = new FbCommand(sqlIncluir, conn); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } Vamos Criar um outro mtodo do tipo void para excluir os dados. public void excluir() { string sqlExcluir = "DELETE FROM tabApostolos WHERE CODIGO = ' " + int.Parse(textBox1.Text) + " ' "; FbConnection conn = new FbConnection(strConn); FbCommand cmd = new FbCommand(sqlExcluir, conn); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } Agora vamos criar o metodo que ir alterar os dados no banco. public void alterar() { string sqlAlterar = "UPDATE tabApostolos SET Nome = ' " + textBox2.Text.Replace(" ' ", " ' ' ") + " ' WHERE Codigo = ' " + int.Parse(textBox1.Text) + " ' "; FbConnection conn = new FbConnection(strConn); FbCommand cmd = new FbCommand(sqlAlterar,conn); conn.Open(); cmd.ExecuteNonQuery();

conn.Close(); } Altere o texto do primeiro button para ACESSAR, d dois clicks nele e acrescente o cdigo; private void button1_Click(object sender, EventArgs e) {

acessar();} Altere o texto do segundo button para INCLUIR, d dois clicks nele e acrescente o cdigo; private void button2_Click(object sender, EventArgs e) { incluir(); acessar(); limpaTbx(); } Altere o texto do terceiro button para ALTERAR, d dois clicks nele e acrescente o cdigo; private void button3_Click(object sender, EventArgs e) { alterar(); acessar(); limpaTbx(); } Altere o texto do quarto button para EXCLUIR, d dois clicks nele e acrescente o cdigo; private void button4_Click(object sender, EventArgs e) { excluir(); acessar(); limpaTbx(); } Digite um nmero no primeiro textbox e digite um nome no segundo textbox e clique no boto incluir. Depois poder digitar o mesmo cdigo novamente no primeiro textbox e alterar ou excluir o nome como quizer, pois o cdigo acima funciona perfeitamente.

Devemos notar que no foi preciso declarar a classe FbParameter, no exemplo em questo, pois as strings SQL indicam o comando que a classe FbCommandir fazer e passam os parmertros automaticamente. IMPORTANTE no esquea de declarar os apostrofos ' antes e depois da declarao dos textbox. Seno no ser considerado como um valor e o compilador dar erro. Note tambm que nos metodos de alterar, incluir e excluir no foi necessrio o uso das classes dataSet e fbDataAdapter. cmd.ExecuteNonQuery(); // O mtodo ExecuteNonQuery do objeto cmd executa as operaes de alterao, incluso e excluso. ATENAO: SE VC NOTOU ALGUNS CDIGO SO REPETIDOS COLOQUE A CUCA PRA FUNCIONAR QUE D PRA ELIMIN-LS Se vc gostou do post e se acha que isso vai lhe ajudar no trabalho ou se tem alguma dvida posta um comentrio ai.