Travailler avec les bases de données en C++ : PostgreSQL et MongoDB pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi un développeur C++ a-t-il besoin de bases de données ?

C++ est l'un des langages de programmation les plus puissants, utilisé pour créer des systèmes à forte charge, des jeux, des applications financières et des logiciels embarqués. Cependant, toute application sérieuse nécessite un stockage de données. C'est là que les systèmes de gestion de bases de données (SGBD) viennent à la rescousse.

Dans cet article, nous allons voir comment se connecter et effectuer des opérations de base avec deux SGBD populaires — le relationnel PostgreSQL et l'orienté documents MongoDB — en utilisant C++. Ce contenu est destiné aux développeurs débutants qui connaissent déjà les bases du C++, mais n'ont pas encore travaillé avec des bases de données. Vous apprendrez à installer les bibliothèques nécessaires, à écrire des requêtes CRUD simples et à éviter les erreurs courantes.



1. Préparation de l'environnement et choix des bibliothèques

Avant d'écrire du code, il est nécessaire d'installer les bibliothèques clientes pour travailler avec les bases de données. Pour C++, il existe plusieurs options, mais nous allons examiner les plus populaires et stables :

  • Pour PostgreSQL — libpqxx (wrapper C++ officiel pour libpq).
  • Pour MongoDB — mongocxx (pilote C++ officiel de MongoDB).


Installation de libpqxx (Ubuntu/Debian)

sudo apt-get updatesudo apt-get install libpqxx-dev

Pour Windows ou macOS, utilisez les gestionnaires de paquets vcpkg ou Homebrew.



Installation de mongocxx

Installez d'abord le pilote de base mongo-c-driver, puis le pilote C++ :

# Ubuntusudo apt-get install libmongoc-dev libbson-devsudo apt-get install libmongocxx-dev

Après l'installation, assurez-vous que le compilateur voit les fichiers d'en-tête. Lors de la compilation, n'oubliez pas de spécifier les drapeaux de liaison :

g++ -std=c++17 main.cpp -lpqxx -lpq -lmongocxx -lbson


2. Travailler avec PostgreSQL en C++

PostgreSQL est un SGBD objet-relationnel puissant. Nous utiliserons la bibliothèque libpqxx, qui fournit une interface C++ pratique.



Connexion au serveur et création de table

Écrivons d'abord un programme simple qui se connecte à une base de données locale et crée une table d'utilisateurs :

#include <iostream>#include <pqxx/pqxx>

int main() { try { // Connexion à la base de données "testdb" avec l'utilisateur "postgres" pqxx::connection conn("host=localhost dbname=testdb user=postgres password=secret"); if (conn.is_open()) { std::cout << "Connexion à PostgreSQL réussie !" << std::endl; }

// Création d'une transaction pqxx::work txn(conn);

// Requête SQL pour créer la table txn.exec("CREATE TABLE IF NOT EXISTS users (" "id SERIAL PRIMARY KEY," "name VARCHAR(100) NOT NULL," "email VARCHAR(100) UNIQUE NOT NULL);");

txn.commit(); // Validation des modifications std::cout << "Table users créée." << std::endl;

} catch (const std::exception &e) { std::cerr << "Erreur : " << e.what() << std::endl; } return 0;}


Opérations CRUD : insertion et lecture de données

Ajoutons quelques enregistrements et effectuons une sélection :

pqxx::work txn(conn);

// Insertion de donnéestxn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2);", "Ivan Petrov", "ivan@example.com");txn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2);", "Maria Smirnova", "maria@example.com");txn.commit();

// Lecture de donnéespqxx::nontransaction ntxn(conn);pqxx::result result = ntxn.exec("SELECT id, name, email FROM users;");

for (auto row : result) { std::cout << "ID : " << row[0].as<int>() << ", Nom : " << row[1].as<std::string>() << ", Email : " <<

Blogs

Book Recommendations