Introducción: ¿Por qué un desarrollador de C# necesita bases de datos?
Cualquier aplicación moderna —desde un blog simple hasta un sistema ERP corporativo— almacena datos. Sin una base de datos (BD) es imposible garantizar almacenamiento persistente, búsqueda rápida e integridad de la información. Para un desarrollador de C#, saber trabajar con bases de datos no es solo un plus, sino una habilidad obligatoria. En este artículo analizaremos dos sistemas de gestión de bases de datos (SGBD) populares: el relacional PostgreSQL y el orientado a documentos MongoDB. Aprenderá cómo conectarse a ellos desde una aplicación .NET y realizar operaciones básicas (CRUD). El artículo está orientado a principiantes, por lo que avanzaremos desde la instalación hasta el primer código funcional.
1. Preparación del entorno e instalación de controladores
Antes de escribir código, es necesario instalar las propias bases de datos y agregar al proyecto de C# los paquetes NuGet correspondientes.
1.1. Instalación de PostgreSQL y MongoDB
- PostgreSQL: Descargue la última versión desde el sitio oficial postgresql.org. Durante la instalación, recuerde el puerto (por defecto 5432) y la contraseña del superusuario
postgres. - MongoDB: Descargue la Community Edition desde mongodb.com. Instálelo como servicio. Para mayor comodidad, también puede instalar MongoDB Compass — una interfaz gráfica para visualizar datos.
Después de la instalación, asegúrese de que los servicios estén ejecutándose. Para verificarlo, use la línea de comandos (para PostgreSQL: psql -U postgres, para MongoDB: mongosh).
1.2. Creación del proyecto e instalación de paquetes
Cree una aplicación de consola .NET 8:
dotnet new console -n DatabaseDemocd DatabaseDemoAhora instale los controladores necesarios:
// Para PostgreSQLdotnet add package Npgsql
// Para MongoDBdotnet add package MongoDB.DriverNpgsql es un proveedor .NET completo para PostgreSQL. MongoDB.Driver es el controlador oficial de MongoDB, Inc.
2. Trabajo con PostgreSQL en C#
PostgreSQL es un SGBD objeto-relacional. Los datos se almacenan en tablas relacionadas entre sí mediante claves foráneas. Para trabajar, usaremos consultas SQL directas a través de Npgsql, para que entienda la mecánica de conexión y ejecución de comandos.
2.1. Conexión al servidor y creación de tabla
Primero, cree una base de datos (por ejemplo, shopdb) mediante psql o mediante código. En el código nos conectaremos a una BD ya existente. Escribamos un método para crear la tabla 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("Tabla creada.");Observe: usamos using para cerrar automáticamente la conexión. El tipo SERIAL crea automáticamente un campo autoincremental.
2.2. Operaciones CRUD (Insert, Select, Update, Delete)
Agreguemos algunos productos y mostrémoslos en pantalla:
// Inserción de datosstring insert = "INSERT INTO Products (Name, Price, Quantity) VALUES (@n, @p, @q)";using var cmdInsert = new NpgsqlCommand(insert, connection);cmdInsert.Parameters.AddWithValue("@n", "Portátil");cmdInsert.Parameters.AddWithValue("@p", 79999.99m);cmdInsert.Parameters.AddWithValue("@q", 10);cmdInsert.ExecuteNonQu