C# - ListView - CRUD básico com SQL Server em 3 camadas - III


 Neste artigo vamos recordar como realizar o CRUD básico usando o banco de dados SQL Server em uma aplicação Windows Forms aplicando uma arquitetura em camadas.

Continuando a segunda parte do artigo vamos prosseguir com a manutenção de usuários implementando as funcionalidades para incluir, alterar e excluir dados no formulário.

Realizando o CRUD - Implementação na camada de Interface

Agora, para concluir nosso projeto vamos em cada evento Click dos botões de comando definir o código para realizar a respectiva operação.

1 - Incluir usuário - Botão Incluir

        private void btnIncluir_Click(object sender, EventArgs e)
        {
            try
            {
                if (ValidaDados())
                {
                    if (acc.ProcurarPorNome(txtNome.Text))
                    {
                        MessageBox.Show("Já existe usuário cadastrado com este login. Tente outro nome para o login.", "Login já Cadastrado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        txtNome.Focus();
                        return;
                    }
                    acc.cadastraUsuario(txtNome.Text, txtEmail.Text, acc.gerarHashSenha(txtSenha.Text));
                    MessageBox.Show("Usuário incluido com sucesso.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    PreencheListView(ref lvUsuarios);
                    AlternarCoresdeFundo(lvUsuarios, Color.Aqua, Color.LightGreen);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

O código após validar os dados informados pelo usuário verifica se o não existe um nome de login já cadastrado para o nome informado usando a rotina ProcurarPorNome da classe UsuarioBLL.

Para incluir o usuário foi chamada o método cadastraUsuario da classe UsuarioBLL.

2 - Alterar usuário - Botão Atualizar

        private void btnAtualizar_Click(object sender, EventArgs e)
        {
            try
            {
                if (ValidaDados())
                {
                    int codigo = Convert.ToInt32(txtID.Text);

                    if (!nomeAtual.Equals(txtNome.Text))
                    {
                        if (acc.ProcurarPorNome(txtNome.Text))
                        {
                            MessageBox.Show("Já existe usuário cadastrado com este login. Tente outro nome para o login.", "Login já Cadastrado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            txtNome.Focus();
                            return;
                        }
                    }

                    if (senhaAtual.Equals(txtSenha.Text))
                        acc.alterarUsuario(txtNome.Text, txtEmail.Text, txtSenha.Text, codigo);
                    else
                        acc.alterarUsuario(txtNome.Text, txtEmail.Text, acc.gerarHashSenha(txtSenha.Text), codigo);

                    MessageBox.Show("Usuário atualizado com sucesso.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                    PreencheListView(ref lvUsuarios);
                    AlternarCoresdeFundo(lvUsuarios, Color.Aqua, Color.LightGreen);

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Para alterar um usuário primeiro validamos os dados informados para não permitir valores inválidos.

Em seguida verificamos se o nome esta sendo alterado (!nomeAtual.Equals(txtNome.Text) e neste caso verificamos ainda se o nome já não esta cadastrado.

Devemos também verificar se a senha não esta sendo alterada (senhaAtual.Equals(txtSenha.Text) e se estiver devemos gerar o Hash para a nova senha informada.

3 - Excluir usuário - Botão Excluir

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            DialogResult resultado = MessageBox.Show("Confirma exclusão deste usuário ?", "Confirma Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (resultado == DialogResult.Yes)
            {
                try
                {
                    int codigo = Convert.ToInt32(txtID.Text);
                    acc.excluirUsuario(codigo);
                    MessageBox.Show("Usuário excluido com sucesso.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    PreencheListView(ref lvUsuarios);
                    AlternarCoresdeFundo(lvUsuarios, Color.Aqua, Color.LightGreen);

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro ao excluir o usuário." + ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

4 - Limpar - Botão Limpar

        private void btnLimpar_Click(object sender, EventArgs e)
        {
            foreach (Control c in grpUsuario.Controls)
            {
                if (c is TextBox)
                {
                    c.Text = "";
                }
            }
            txtNome.Focus();
        }

O botão Limpar é usado para limpar os controles TextBox quando o usuário for incluir um novo dado.

4 - Encerrar - Botão Sair

        private void btnSair_Click(object sender, EventArgs e)
        {
            DialogResult resultado = MessageBox.Show("Deseja encerrar o programa ?", "Encerrar",
 MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (resultado == DialogResult.Yes)
                Application.Exit();
        }

Com isso conclui o artigo e mostrei, embora com algumas simplificações (que você pode ajustar melhorando o código) como realizar as operações de manutenção de dados usando um controle ListView com ADO .NET em camadas.

Pegue o código completo aqui: WF_Crud.zip

"Pensai nas coisas que são de cima, e não nas que são da terra;"
Colossenses 3:2

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

Referências:


José Carlos Macoratti