Introdução: por que um desenvolvedor C# precisa de banco de dados?
Qualquer aplicação moderna — de um blog simples a um sistema ERP corporativo — armazena dados. Sem um banco de dados (BD), é impossível garantir armazenamento persistente, busca rápida e integridade das informações. Para um desenvolvedor C#, saber trabalhar com bancos de dados não é apenas um diferencial, mas uma habilidade obrigatória. Neste artigo, vamos explorar dois SGBDs populares: o relacional PostgreSQL e o orientado a documentos MongoDB. Você aprenderá como conectar-se a eles a partir de uma aplicação .NET e realizar operações básicas (CRUD). O artigo é voltado para iniciantes, então vamos progredir da instalação até o primeiro código funcional.
1. Preparação do ambiente e instalação dos drivers
Antes de escrever código, é necessário instalar os próprios bancos de dados e adicionar os pacotes NuGet correspondentes ao projeto C#.
1.1. Instalação do PostgreSQL e MongoDB
- PostgreSQL: Baixe a versão mais recente do site oficial postgresql.org. Durante a instalação, lembre-se da porta (padrão 5432) e da senha do superusuário
postgres. - MongoDB: Baixe a Community Edition em mongodb.com. Instale como serviço. Para maior comodidade, você também pode instalar o MongoDB Compass — uma interface gráfica para visualizar dados.
Após a instalação, verifique se os serviços estão em execução. Para testar, use a linha de comando (para PostgreSQL: psql -U postgres, para MongoDB: mongosh).
1.2. Criação do projeto e instalação dos pacotes
Crie um aplicativo de console .NET 8:
dotnet new console -n DatabaseDemocd DatabaseDemoAgora instale os drivers necessários:
// Para PostgreSQLdotnet add package Npgsql
// Para MongoDBdotnet add package MongoDB.DriverNpgsql é um provedor .NET completo para PostgreSQL. MongoDB.Driver é o driver oficial da MongoDB, Inc.
2. Trabalhando com PostgreSQL em C#
PostgreSQL é um SGBD objeto-relacional. Os dados são armazenados em tabelas, relacionadas entre si por meio de chaves estrangeiras. Para trabalhar, usaremos consultas SQL puras através do Npgsql, para que você entenda a mecânica de conexão e execução de comandos.
2.1. Conexão ao servidor e criação de tabela
Primeiro, crie um banco de dados (por exemplo, shopdb) via psql ou através de código. No código, nos conectaremos a um BD já existente. Vamos escrever um método para criar a tabela Products:
using Npgsql;
string connectionString = "Host=localhost;Port=5432;Database=shopdb;Username=postgres;Password=your_password";
using var connection = new NpgsqlConnection(connectionString);connection.Open();
string createTable = @"CREATE TABLE IF NOT EXISTS Products ( Id SERIAL PRIMARY KEY, Name VARCHAR(100) NOT NULL, Price DECIMAL(10,2) NOT NULL, Quantity INT DEFAULT 0);";
using var command = new NpgsqlCommand(createTable, connection);command.ExecuteNonQuery();Console.WriteLine("Tabela criada.");Observe: usamos using para fechar automaticamente a conexão. O tipo SERIAL cria automaticamente um campo auto-incrementável.
2.2. Operações CRUD (Insert, Select, Update, Delete)
Vamos adicionar alguns produtos e exibi-los na tela:
// Inserção de dadosstring insert = "INSERT INTO Products (Name, Price, Quantity) VALUES (@n, @p, @q)";using var cmdInsert = new NpgsqlCommand(insert, connection);cmdInsert.Parameters.AddWithValue("@n", "Notebook");cmdInsert.Parameters.AddWithValue("@p", 79999.99m);cmdInsert.Parameters.AddWithValue("@q", 10);cmdInsert.ExecuteNonQu