Работа с базами данных в C#: PostgreSQL и MongoDB для начинающих

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: зачем C# разработчику базы данных?

Любое современное приложение — от простого блога до корпоративной ERP-системы — хранит данные. Без базы данных (БД) невозможно обеспечить постоянное хранение, быстрый поиск и целостность информации. Для C# разработчика умение работать с базами данных — это не просто плюс, а обязательный навык. В этой статье мы разберем две популярные СУБД: реляционную PostgreSQL и документо-ориентированную MongoDB. Вы узнаете, как подключиться к ним из .NET-приложения и выполнять базовые операции (CRUD). Статья ориентирована на начинающих, поэтому мы будем двигаться от установки до первого рабочего кода.

1. Подготовка окружения и установка драйверов

Прежде чем писать код, необходимо установить сами базы данных и добавить в проект C# соответствующие NuGet-пакеты.

1.1. Установка PostgreSQL и MongoDB

  • PostgreSQL: Скачайте последнюю версию с официального сайта postgresql.org. При установке запомните порт (по умолчанию 5432) и пароль для суперпользователя postgres.
  • MongoDB: Скачайте Community Edition с mongodb.com. Установите как сервис. Для удобства можно также установить MongoDB Compass — графический интерфейс для просмотра данных.

После установки убедитесь, что сервисы запущены. Для проверки используйте командную строку (для PostgreSQL: psql -U postgres, для MongoDB: mongosh).

1.2. Создание проекта и установка пакетов

Создайте консольное приложение .NET 8:

dotnet new console -n DatabaseDemo
cd DatabaseDemo

Теперь установите необходимые драйверы:

// Для PostgreSQL
dotnet add package Npgsql

// Для MongoDB
dotnet add package MongoDB.Driver

Npgsql — это полноценный .NET-провайдер для PostgreSQL. MongoDB.Driver — официальный драйвер от MongoDB, Inc.

2. Работа с PostgreSQL в C#

PostgreSQL — это объектно-реляционная СУБД. Данные хранятся в таблицах, связанных между собой через внешние ключи. Для работы мы будем использовать сырые SQL-запросы через Npgsql, чтобы вы поняли механику подключения и выполнения команд.

2.1. Подключение к серверу и создание таблицы

Сначала создадим базу данных (например, shopdb) через psql или через код. В коде мы будем подключаться к уже существующей БД. Напишем метод для создания таблицы 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("Таблица создана.");

Обратите внимание: мы используем using для автоматического закрытия соединения. Тип SERIAL автоматически создает автоинкрементное поле.

2.2. CRUD-операции (Insert, Select, Update, Delete)

Добавим несколько товаров и выведем их на экран:

// Вставка данных
string insert = "INSERT INTO Products (Name, Price, Quantity) VALUES (@n, @p, @q)";
using var cmdInsert = new NpgsqlCommand(insert, connection);
cmdInsert.Parameters.AddWithValue("@n", "Ноутбук");
cmdInsert.Parameters.AddWithValue("@p", 79999.99m);
cmdInsert.Parameters.AddWithValue("@q", 10);
cmdInsert.ExecuteNonQuery();

// Выборка данных
string select = "SELECT * FROM Products";
using var cmdSelect = new NpgsqlCommand(select, connection);
using var reader = cmdSelect.ExecuteReader();

while (reader.Read())
{
    Console.WriteLine($"{reader["Id"]}: {reader["Name"]} - {reader["Price"]} руб. (остаток: {reader["Quantity"]})");
}

Для обновления и удаления используйте аналогичные запросы с UPDATE и DELETE, передавая параметры через Parameters.AddWithValue. Важно: всегда используйте параметризованные запросы для защиты от SQL-инъекций.

3. Работа с MongoDB в C#

MongoDB — это NoSQL база данных, где данные хранятся в виде JSON-подобных документов (BSON). Здесь нет таблиц и схем — вы работаете с коллекциями и документами.

3.1. Подключение и получение коллекции

По умолчанию MongoDB слушает порт 27017. Подключимся к базе shopdb и получим коллекцию products:

using MongoDB.Driver;
using MongoDB.Bson;

var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("shopdb");
var collection = database.GetCollection<BsonDocument>("products");

Мы используем BsonDocument — универсальный тип для работы с документами. Можно также создать класс Product и использовать его (тогда коллекция будет типизированной: GetCollection<Product>).

3.2. CRUD-операции в MongoDB

Добавим документ и выполним поиск:

// Создание документа
var document = new BsonDocument
{
    { "name", "Смартфон" },
    { "price", 49999.99 },
    { "quantity", 25 }
};
collection.InsertOne(document);
Console.WriteLine("Документ добавлен.");

// Чтение всех документов
var filter = Builders<BsonDocument>.Filter.Empty;
var documents = collection.Find(filter).ToList();

foreach (var doc in documents)
{
    Console.WriteLine(doc.ToString());
}

Для обновления используйте UpdateOne или UpdateMany, для удаления — DeleteOne:

// Обновление: увеличить цену на                

Блоги

Рекомендаций по книгам