C# - CRUD básico no SQL Server usando Combobox/TextBox usando DAL


 Neste artigo vamos criar uma aplicação C# que faz o CRUD básico em um banco de dados SQL Server exibindo os dados em uma combobox e a seleção em um TextBox usando uma camada de acesso a dados.

Hoje vamos criar uma aplicação Windows Forms usando a linguagem C# e realizar o CRUD básico em uma tabela Alunos de um banco de dados CadastroDB do SQL Server cuja estrutura é mostrada abaixo:

CREATE TABLE [dbo].[Alunos](
	[AlunoId] [int] IDENTITY(1,1) NOT NULL,
	[Nome] [nvarchar](80) NOT NULL,
	[Endereco] [nvarchar](150) NOT NULL,
	[Email] [nvarchar](200) NOT NULL,
	[Telefone] [nvarchar](50) NOT NULL
)

A string de conexão com o banco de dados CadastroDB será armazenada no arquivo App.Config da aplicação :

Para obter o valor da string de conexão vamos usar a classe ConfigurationManager que requer uma referência ao namespace System.Configuration no projeto.

Vamos exibir os dados em um controle Combobox e a seleção exibirá os detalhes do registro nas caixas de texto do formulário.

Abaixo temos o projeto exibindo suas funcionalidades:

O projeto pode ser melhorado em muitos aspectos mas procurar apresentar alguns recursos básicos para os iniciantes na linguagem C#.

Recursos Usados:

Criando o projeto Windows Forms

Abra o VS 2017 Community e crie um projeto usando o template Windows Desktop -> Windows Forms App(.NET Framework) e informe o nome CShp_ComboTextBox;

Vamos criar uma classe chamada Aluno que será o nosso modelo de domínio e representa um aluno.

Criando a camada de acesso a dados : DalHelper

Para separar as responsabilidades e não poluir o nosso formulário que é a camada de interface com código de acesso a dados vamos criar a classe DalHelper no projeto contendo o código para acessar e persistir dados.

A seguir vamos definir o código do controlador conforme abaixo:   

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace CShp_ComboTextBox
{
    public class DalHelper : IDisposable
    {
        private static SqlConnection sqlConnection;
        private static string sqlConnectionString;
        public DalHelper()
        { }
        private static string DbConnectionString()
        {
            sqlConnectionString = ConfigurationManager.ConnectionStrings["conexaoSQL"].ConnectionString;
            return sqlConnectionString;
        }
        private static SqlConnection DbConnection()
        {
            sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["conexaoSQL"]
.ConnectionString);
            sqlConnection.Open();
            return sqlConnection;
        }
        public static DataTable GetAlunos()
        {
            SqlDataAdapter da = null;
            DataTable dt = new DataTable();
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM Alunos";
                    da = new SqlDataAdapter(cmd.CommandText, DbConnection());
                    da.Fill(dt);
                    return dt;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static DataTable GetAlunoTabela(int id)
        {
            SqlDataAdapter da = null;
            DataTable dt = new DataTable();
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM Alunos Where AlunoId=" + id;
                    da = new SqlDataAdapter(cmd.CommandText, DbConnection());
                    da.Fill(dt);
                    return dt;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static Aluno GetAluno(int id)
        {
            SqlDataAdapter da = null;
            DataTable dt = new DataTable();
            Aluno aluno = new Aluno();
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM Alunos Where AlunoId=" + id;
                    da = new SqlDataAdapter(cmd.CommandText, DbConnection());
                    da.Fill(dt);
                    aluno.AlunoId = Convert.ToInt32(dt.Rows[0]["AlunoId"]);
                    aluno.Nome = dt.Rows[0]["Nome"].ToString();
                    aluno.Endereco = dt.Rows[0]["Endereco"].ToString();
                    aluno.Email = dt.Rows[0]["Email"].ToString();
                    aluno.Telefone = dt.Rows[0]["Telefone"].ToString();
                    return aluno;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static void Add(Aluno aluno)
        {
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    cmd.CommandText = "INSERT INTO Alunos(Nome, Endereco,Email,Telefone ) values 
(@nome, @endereco, @email, @telefone)";
                    cmd.Parameters.AddWithValue("@nome", aluno.Nome);
                    cmd.Parameters.AddWithValue("@endereco", aluno.Endereco);
                    cmd.Parameters.AddWithValue("@email", aluno.Email);
                    cmd.Parameters.AddWithValue("@telefone", aluno.Telefone);
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static void Update(Aluno aluno)
        {
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    if (aluno != null)
                    {
                        cmd.CommandText = "UPDATE Alunos SET Nome=@Nome,Email=@Email,Endereco=
@Endereco,Telefone=@Telefone WHERE AlunoId=@Id";
                        cmd.Parameters.AddWithValue("@Id", aluno.AlunoId);
                        cmd.Parameters.AddWithValue("@Nome", aluno.Nome);
                        cmd.Parameters.AddWithValue("@Endereco", aluno.Endereco);
                        cmd.Parameters.AddWithValue("@Email", aluno.Email);
                        cmd.Parameters.AddWithValue("@Telefone", aluno.Telefone);
                        cmd.ExecuteNonQuery();
                    }
                };
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static void Delete(int Id)
        {
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    cmd.CommandText = "DELETE FROM Alunos Where AlunoId=@Id";
                    cmd.Parameters.AddWithValue("@Id", Id);
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void Dispose()
        {
            GC.SuppressFinalize(this);
        }
    }
}

No código acima criamos os métodos para acessar e persistir dados na tabela Alunos do banco de dados CadastroDB usando os recursos da ADO .NET.

Todos os métodos são estáticos de forma que não precisaremos instanciar a classe DalHelper.

Definindo o código do formulário Form1

A camada de interface com o usuário é o formulário Form1 que possui os seguintes controles:

  • 1 Combobox - cboAlunos
  • 5 Labels
  • 5 TextBox - txtID, txtNome, txtEndereco, txtEmail e txtTelefone
  • 5 Buttons - btnIncluir, btnAlterar, btnExcluir e btnSair

No início do formulário vamos declarar uma variável para ser usada em todo o formulário:

int codigoAluno;

No evento Load do formulário vamos chamar o método CarregaDados() para preencher o combobox com os nomes dos alunos:

Podemos ver que no método CarregaDados() usamos o método GetAlunos da classe DalHelper para obter os alunos cadastrados.

Exibimos o nome do aluno e definimos o valor de AlunoId como sendo o valor que será obtido na seleção de um nome da combobox.

O método LimpaFormulario() apenas limpa as caixas de texto :

Ao selecionar um aluno na combobox temos que exibir demais dados do aluno. Para  isso usamos o evento SelectedIndexChanged do controle Combobox.

Obtemos o código do aluno selecionado e usamos o método GetAluno da classe DalHelper para retornar um objeto Aluno.

A seguir chamamos o método PreencheDados(aluno) para exibir os dados do aluno:

A seguir temos o código do evento Click de cada um dos botões de comando do formulário.

1- Incluir

2- Alterar

3- Deletar

Pronto ! Executando o projeto iremos obter o seguinte resultado:

Pegue o projeto aqui :   CShp_ComboTextBox.zip 

"Sabendo que, se o nosso coração nos condena, maior é Deus do que o nosso coração, e conhece todas as coisas."
1 João 3:20

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 ?

Referências:


José Carlos Macoratti