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: