terça-feira, 22 de setembro de 2009

Conexão de dados com visual C# e FireBird parte II (trabalho unopar)

Bem! Antes de mais nada quero aqui deixar claro que não 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 básicas do ADO.NET responsáveis pela conexão com o banco de dados. Volto a dizer que existem muitas maneiras de se fazer isso.

Também não fiz nenhum tratamento de exessoes try/catch/finally. Ou usado a clausula using(){}.

Se vc não se lembra como referenciar o data Provider FirebirdClient veja a primeira parte Conexão 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 questão estética. Veja como ficou o form.


A primeira coisa que vamos fazer é criar a string de conexão. Ela será usada em todos os métodos que fazem a conexão 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 conexão for dividida em mais de uma linha como foi meu caso nunca esqueça do operador '+' se não dará um erro. Não esqueça 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 método 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 método 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 código;

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

Altere o texto do segundo button para INCLUIR, dê dois clicks nele e acrescente o código;

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 código;

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 código;

private void button4_Click(object sender, EventArgs e)
{
excluir();
acessar();
limpaTbx();
}

Digite um número no primeiro textbox e digite um nome no segundo textbox e clique no botão incluir. Depois poderá digitar o mesmo código novamente no primeiro textbox e alterar ou excluir o nome como quizer, pois o código acima funciona perfeitamente.


Devemos notar que não foi preciso declarar a classe FbParameter, no exemplo em questão, pois as strings SQL indicam o comando que a classe FbCommand irá fazer e passam os parâmertros automaticamente. IMPORTANTE não esqueça de declarar os apostrofos ' antes e depois da declaração dos textbox. Senão não será considerado como um valor e o compilador dará erro. Note também que nos metodos de alterar, incluir e excluir não foi necessário o uso das classes dataSet e fbDataAdapter.

cmd.ExecuteNonQuery(); // O método ExecuteNonQuery do objeto cmd executa as operações de alteração, inclusão e exclusão.

ATENÇAO: SE VC NOTOU ALGUNS CÓDIGO SÃO REPETIDOS COLOQUE A CUCA PRA FUNCIONAR QUE DÁ PRA ELIMINÁ-LÓS

Se vc gostou do post e se acha que isso vai lhe ajudar no trabalho ou se tem alguma dúvida posta um comentário ai.

"""Disse Jesus: Eu Sou o Caminho e a Verdade e a Vida; ninguém vem ao Pai senão por mim. Jo14:6.Procure uma igreja evangelica e entregue sua vida a JESUS e o deixe salvá-la!!!"""


11 comentários:

  1. Este comentário foi removido pelo autor.

    ResponderExcluir
  2. Como já havia dito no outro comentário, se puder dividir para podermos comparar e ver no que erramos, será de muita ajuda... meu email novamente: pahik_bh@hotmail.com... valew...

    ResponderExcluir
  3. Brother eu estudo na unopar tenho que fazer um sistema que nem esse, preciso de sua ajudar, se vc pode me mandar os codigos fontes para eu ver onde foi que eu errei. meu e-mail é luizricardo_pvh@hotmail.com. Eu Agradeço vlw.

    ResponderExcluir
  4. Luiz eu mando, mas o código é esse mesmo ai. Não tem nada de diferente.

    ResponderExcluir
  5. Grande Biff, fiz o meu trabalho baseado nesse teu material, veja como fiza minhas funções, acho que fica mais facil, utilizei a mesma coneção:
    public void incluir(string _Descricao, string _Data, string _Hora )
    {
    string sqlIncluir = "INSERT INTO AGENDA (Data, Hora, Tarefa, Executada)"
    + "Values ( ' " + _Data + " ' ,' " + _Hora + " ' ,' " + _Descricao + " ' ,'N' )";
    FbCommand cmd = new FbCommand(sqlIncluir, Connection.FbConn);
    cmd.ExecuteNonQuery();
    }

    ResponderExcluir
  6. E ai Tavinho!!!!!!!! Legal sua dica!!! Pelo que entendi Vc usou os atributos _Data, _Hora etc.. no lugar da declaração dos controles textbox. O problema é que vai ocupar memoria a mais com a criação dos atributos. É claro que se for numa classe em separado eles são necessários. Sua declaraçao da conexão no construtor do comando, Connection.FbConn é bem interessante. Pelo que entendi vc criou um objeto conection global. Só Vc tem que ter certeza se dessa forma a conexão não só vai ser aberta como também será automaticamente fechada. Já que no metodo não foi declarada o fechamento da conexão. A não ser que vc tenha declarado na criaçao do objeto connection um tempo limite pra conexão ficar aberta.

    Valeu a dica!!!

    Um abração!!!!

    ResponderExcluir
  7. E ai Biff.

    Saiu um novo livro - Microsoft Visual C# 2008

    http://www.submarino.com.br/produto/1/21483039/microsoft+visual+c#+2008:+passo+a+passo/?franq=173448

    ResponderExcluir
  8. Cara eu estou começando agora c# sou aluno da unopar preciso de uma ajuda.
    Como eu faço para de vez ele me retornar os dados na GridView ele me retornar no propio textbox?

    Ex. Digito o codigo 2 na textbox correspondente ao campo codigo.
    Clico num botao consultar e ele me retona no textbox "nome" o dado correspondente ao codigo 2 nesse cado o nome Mateus

    ResponderExcluir
  9. 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
  10. blz?? carinha seguinte...
    Seguindo a mesma linha de codigo (firebird + c#)

    como seria salvar dados diretamente pelo datagrid??
    pois no teu exemplo o datagrid serve apenas para mostrar dados
    dá uma mãozinha por favor

    ResponderExcluir
  11. Estou iniciando a disciplina Banco de dados e na parte prática estou estudando sobre a interação Firebird e C# ... muito bom o conteúdo disponibilizado neste blog... Poderia dar uma dica de como implantar o comando SQL CREATE TABLE () num projeto windows form C#? Na verdade vou desenvolver um programa que além de manipular os dados das tabelas também terá um botão para criar tabelas... como fazer isso???

    ResponderExcluir

free counters