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:
|
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Agenda de Contatos - CRUD Básico (para novatos) - Macoratti
NET - Entity Framework 5 - Operações CRUD (revisitado) - Macoratti