Neste post, vamos abordar a integração de um sistema com banco de dados, usando C# e PostgreSQL. Desenvolvemos anteriormente um sistema simples para registrar alunos em um curso (Windows Forms), mas as informações eram estáticas. Quando fechávamos o sistema, todos os dados eram perdidos. O objetivo agora é integrar com um banco de dados para que esses registros sejam persistidos, ou seja, mantidos no banco e possam ser consultados sempre que necessário.
1. Instalação do PostgreSQL
A primeira etapa é instalar o PostgreSQL. O processo de instalação é simples:
- Baixe o PostgreSQL: Downloads.
- Execute o arquivo de instalação, siga as instruções clicando em “Next” e configure a senha do banco de dados.
- Defina a porta do servidor, que geralmente é a padrão.
- Finalize a instalação.
Após a instalação, abra o pgAdmin (ferramenta de gerenciamento do PostgreSQL) para criar e gerenciar os bancos de dados.
2. Configuração do Banco de Dados
Com o PostgreSQL instalado:
- No pgAdmin, crie uma nova conexão clicando com o botão direito em “Servers” e selecionando “Create Server”.
- Nomeie o servidor (ex: CSharp) e configure a conexão usando
localhost
e a porta padrão. - Insira a senha definida na instalação.
- Com a conexão criada, crie um novo banco de dados chamado “portal_do_aluno”.
Agora, o banco de dados está vazio, sem tabelas. Vamos criar uma tabela chamada alunos com as seguintes colunas:
id
: do tipo serial, serve como chave primária.nome
: string com até 250 caracteres.curso
: string com até 250 caracteres.idade
: do tipo inteiro.
Com a estrutura pronta, podemos agora integrar nosso sistema C# ao banco de dados.
3. Integração com C#
Abra o projeto no Visual Studio. Este é o mesmo projeto utilizado no post anterior. No entanto, agora vamos adicionar a persistência dos dados no banco de dados PostgreSQL.
Pacotes Necessários
Instale os pacotes necessários para a integração com o PostgreSQL:
- Npgsql: pacote para conectar o PostgreSQL com C#.
- Dapper: pacote que facilita a execução de comandos SQL e mapeamento de objetos.
Instale-os usando o gerenciador de pacotes NuGet:
Install-Package Npgsql Install-Package Dapper
4. Criando a Conexão com o Banco
Na arquitetura do projeto, crie uma pasta chamada Infra (ou infraestrutura). Dentro dela, crie uma classe chamada DbConnection. Esta classe será responsável por abrir e fechar a conexão com o banco de dados.
Estrutura da classe de conexão
public class DbConnection : IDisposable { private readonly NpgsqlConnection _connection; public DbConnection() { _connection = new NpgsqlConnection("Host=localhost;Port=5432;Database=portal_do_aluno;Username=postgres;Password=1234"); _connection.Open(); } public void Dispose() { _connection.Close(); } }
A classe implementa a interface IDisposable
, garantindo que a conexão seja fechada automaticamente quando não estiver mais sendo usada.
5. Criando o Repositório de Alunos
Agora, crie uma classe chamada AlunoRepository. Nela, implementaremos os métodos para adicionar e listar alunos no banco de dados.
Método para adicionar e listar alunos
using Dapper; public class AlunoRepository { public bool AdicionarAluno(Aluno aluno) { using (var db = new DbConnection()) { var query = "INSERT INTO alunos (nome, curso, idade) VALUES (@Nome, @Curso, @Idade)"; var result = db.Connection.Execute(query, new { aluno.Nome, aluno.Curso, aluno.Idade }); return result == 1; } } public IEnumerable<Aluno> ListarAlunos() { using (var db = new DbConnection()) { var query = "SELECT * FROM alunos"; return db.Connection.Query<Aluno>(query).ToList(); } } }
Utilizamos o Dapper para facilitar a execução das queries SQL e o mapeamento entre os dados do banco e a classe Aluno.
6. Modificando o Sistema para Integrar com o Banco
No sistema, após adicionar um aluno à lista local, também o adicionamos no banco de dados:
var aluno = new Aluno { Nome = "João", Curso = "Sistemas", Idade = 30 }; var repositorio = new AlunoRepository(); repositorio.AdicionarAluno(aluno);
Também podemos criar um método para carregar os alunos do banco de dados ao iniciar a aplicação:
public void ObterAlunos() { var repositorio = new AlunoRepository(); var alunos = repositorio.ListarAlunos(); foreach (var aluno in alunos) { // Adicionar aluno na interface gráfica } }
7. Testando a Aplicação
Agora que integramos o sistema com o banco de dados, podemos testar:
- Adicione um novo aluno e veja ele sendo inserido tanto na lista local quanto no banco de dados.
- Feche a aplicação e abra novamente. Os alunos que estavam no banco de dados serão carregados automaticamente.
- Regras de negócio, como não permitir duplicação de alunos, continuam funcionando.
Conclusão
Neste post, implementamos a integração de um sistema em C# com um banco de dados PostgreSQL. Usamos Npgsql para conectar ao banco e Dapper para executar as queries de forma mais simples. Agora, temos um sistema onde os dados persistem no banco, mesmo após a aplicação ser fechada.
Se você quiser acompanhar o tutorial completo, acesse o vídeo e inscreva-se no canal do BraboDev.
“ Nele estava a vida, e a vida era a luz dos homens.”
João 1:4