C# - PostGreSQL - CRUD Básico - III


Na segunda parte deste artigo criamos a solução no Visual C# 2010 Express e criamos a nossa camada de acesso a dados: DAL

Vamos agora criar a interface com usuário usando uma aplicação do tipo Windows Forms e a linguagem C# que vai usar a camada de acesso a dados para realizar as operações CRUD.

Abra o projeto criado no artigo anterior no Visual C# 2010 Express Edition.  (Você também pode abrir no Visual Studio 2012 Express for desktop)

Nosso formulário contendo os controles que irão interagir com o usuário já foi definido no artigo anterior e agora vamos implementar as funcionalidades para exibir, inserir, atualizar e deletar registros.

Na figura abaixo vemos o nosso formulário e vamos usar o evento Click dos botões de comando para implementar cada funcionalidade.

A seguir vamos declarar os seguintes namespaces na classe:

using System;
using System.Windows.Forms;

No início do formulário vamos criar uma instância da classe DAL e declarar a variável codigo que irá armazenar o id do funcionário.

int codigo;
DAL acesso = new DAL();

Vamos agora definir cada funcionalidade iniciando pelo botão Exibir:

No evento Click do botão Exibir inclua o código abaixo:

       private void btnExibir_Click(object sender, EventArgs e)
        {
            try
            {
                atualizarExibicao();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro : " + ex.Message);
            }
        }

O código da rotina atualizarExibicao() e visto abaixo:

   private void atualizarExibicao()
   {
            dgvFunci.DataSource = acesso.GetTodosRegistros();
   }

A rotina usa o método GetTodosRegistros da camada de acesso a dados para obter os dados da tabela e exibir no DataGridView.

No evento Click do botão Atualizar digite o código abaixo:

     private void btnAtualizar_Click(object sender, EventArgs e)
        {
            if (txtNome.Text == string.Empty || txtEmail.Text == string.Empty || txtIdade.Text == string.Empty)
            {
                txtNome.Focus();
                return;
            }

            try
            {
                acesso.AtualizarRegistro(codigo,txtEmail.Text, Convert.ToInt32(txtIdade.Text));
                atualizarExibicao();
                Mensagem();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro : " + ex.Message);
            }
            btnInserir.Enabled = true;
        }

Estamos chamando o método AtualizarRegistro() da classe DAL passando como argumentos o código, o email e a idade.

Para obter os registros do controle DataGridView e exibir nos controles TextBox do formulário quando o usuário clicar em uma linha do DataGridView definimos o código abaixo no evento dgvFunci_CellEnter:

private void dgvFunci_CellEnter(object sender, DataGridViewCellEventArgs e)
 {
            codigo = Convert.ToInt32(dgvFunci.Rows[e.RowIndex].Cells[0].Value);
            txtNome.Text = Convert.ToString(dgvFunci.Rows[e.RowIndex].Cells[1].Value);
            txtEmail.Text = Convert.ToString(dgvFunci.Rows[e.RowIndex].Cells[2].Value);
            txtIdade.Text = Convert.ToString(dgvFunci.Rows[e.RowIndex].Cells[3].Value);
 }

A clicar em uma célula ou linha do DataGridView iremos obter os valores de cada célula e exibi-los nas caixas de texto do formulário.

No evento Click do botão Inserir temos o código a seguir:

       private void btnInserir_Click(object sender, EventArgs e)
        {
            if (btnInserir.Text == "Inserir")
            {
                limpaTextBox(this);
                txtNome.Focus();
                btnInserir.Text = "Salvar";
            }
            else
            {
                if (btnInserir.Text == "Salvar")
                {
                    if (txtNome.Text == string.Empty)
                    {
                        btnInserir.Text = "Inserir";
                        return;
                    }
                    acesso.InserirRegistros(txtNome.Text,txtEmail.Text,Convert.ToInt32(txtIdade.Text));
                    btnInserir.Text = "Inserir";
                    atualizarExibicao();
                    Mensagem();
                }
            }
        }

O método InserirRegistros() da classe DAL é chamado com argumentos: nome, eamil e idade.

A rotina limpaTextBox() possui o seguinte código:

 public void limpaTextBox(Control control)
        {
            foreach (Control c in control.Controls)
            {
                if (c is TextBox)
                {
                    ((TextBox)c).Clear();
                }
                if (c.HasChildren)
                {
                    limpaTextBox(c);
                }
            }
        }

Finalmente no evento Click do botão Deletar inclua o código abaixo:

  private void btnDeletar_Click(object sender, EventArgs e)
        {
            if (txtNome.Text == string.Empty)
            {
                return;
            }

            try
            {
                acesso.DeletarRegistro(txtNome.Text);
                atualizarExibicao();
                Mensagem();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro : " + ex.Message);
            }
        }

Para deletar um registro chamamos o método DeletarRegistro() passando o argumento nome.

A rotina para exibir uma mensagem ao usuário possui o seguinte código :

private void Mensagem()
{
    MessageBox.Show("Operação realizada com sucesso !");
}

A rotina Mensagem() apenas exibe uma caixa de mensagem indicando que operação foi feita com sucesso.

Executando o projeto iremos obter o resultado abaixo após algumas operações.

Embora eu não tenha criada uma camada de negócios (BLL), por questão de simplicidade, em um projeto mais complexo com certeza isso seria necessário.

Pegue o projeto completo aqui: PostgreSQL_CRUD.zip

Joã 8:34 Replicou-lhes Jesus: Em verdade, em verdade vos digo que todo aquele que comete pecado é escravo do pecado.

Joã 8:35 Ora, o escravo não fica para sempre na casa; o filho fica para sempre.

Joã 8:36 Se, pois, o Filho vos libertar, verdadeiramente sereis livres.

Referências:


José Carlos Macoratti