Integração com PostgreSQL em C#

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:

  1. Baixe o PostgreSQL: Downloads.
  2. Execute o arquivo de instalação, siga as instruções clicando em “Next” e configure a senha do banco de dados.
  3. Defina a porta do servidor, que geralmente é a padrão.
  4. 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:

  1. No pgAdmin, crie uma nova conexão clicando com o botão direito em “Servers” e selecionando “Create Server”.
  2. Nomeie o servidor (ex: CSharp) e configure a conexão usando localhost e a porta padrão.
  3. Insira a senha definida na instalação.
  4. 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:

  1. Npgsql: pacote para conectar o PostgreSQL com C#.
  2. 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:

  1. Adicione um novo aluno e veja ele sendo inserido tanto na lista local quanto no banco de dados.
  2. Feche a aplicação e abra novamente. Os alunos que estavam no banco de dados serão carregados automaticamente.
  3. 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

Rolar para cima