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 au travail avec les bases de données en C++

\n\n

Les applications modernes ne peuvent rarement se passer de stockage de données. C++ est un langage de programmation système puissant, parfaitement adapté aux projets à forte charge travaillant avec des bases de données. Dans cet article, nous verrons comment se connecter à deux SGBD populaires — le relationnel PostgreSQL et l'orienté documents MongoDB — et effectuer des opérations de base (CRUD).

\n\n

Ce contenu est destiné aux débutants : vous apprendrez quelles bibliothèques sont nécessaires, comment les installer, et vous verrez des exemples de code prêts à l'emploi. Après cette lecture, vous serez capable d'intégrer C++ avec l'une ou l'autre de ces bases de données.

\n\n

PostgreSQL en C++ : approche relationnelle

\n\n

PostgreSQL est l'un des SGBD relationnels open source les plus fiables. Pour l'utiliser depuis C++, on utilise la bibliothèque libpqxx — un wrapper officiel autour de la bibliothèque C libpq.

\n\n

Installation de libpqxx

\n\n

Sous Linux (Ubuntu/Debian), l'installation se fait avec une seule commande :

\n\n
sudo apt-get install libpqxx-dev
\n\n

Pour Windows, vous pouvez utiliser vcpkg :

\n\n
vcpkg install libpqxx
\n\n

Connexion et exécution de requêtes

\n\n

Voici un exemple simple : connexion à la base de données, création d'une table et insertion de données.

\n\n
#include <iostream>\n#include <pqxx/pqxx>\n\nint main() {\n    try {\n        // Connexion à la base de données (remplacez les paramètres par les vôtres)\n        pqxx::connection conn("dbname=testdb user=postgres password=secret hostaddr=127.0.0.1 port=5432");\n        \n        if (conn.is_open()) {\n            std::cout << "Connexion à PostgreSQL réussie !" << std::endl;\n        }\n\n        // Création d'une transaction\n        pqxx::work txn(conn);\n\n        // Création de la table\n        txn.exec("CREATE TABLE IF NOT EXISTS users ("\n                 "id SERIAL PRIMARY KEY, "\n                 "name VARCHAR(100) NOT NULL, "\n                 "email VARCHAR(100) UNIQUE NOT NULL)");\n\n        // Insertion de données\n        txn.exec("INSERT INTO users (name, email) VALUES "\n                 "('Ivan Petrov', 'ivan@example.com'), "\n                 "('Maria Smirnova', 'maria@example.com')");\n\n        // Validation de la transaction\n        txn.commit();\n        std::cout << "Données ajoutées avec succès !" << std::endl;\n\n    } catch (const std::exception &e) {\n        std::cerr << "Erreur : " << e.what() << std::endl;\n        return 1;\n    }\n    return 0;\n}
\n\n

Lecture de données (SELECT)

\n\n

Pour récupérer des données, utilisez l'itérateur de résultat :

\n\n
pqxx::work txn(conn);\npqxx::result result = txn.exec("SELECT id, name, email FROM users");\n\nfor (const auto &row : result) {\n    int id = row["id"].as<int>();\n    std::string name = row["name"].as<std::string>();\n    std::string email = row["email"].as<std::string>();\n    std::cout << id << " | " << name << " | " << email << std::endl;\n}
\n\n

Important : Utilisez toujours des requêtes paramétrées pour vous protéger des injections SQL :

\n\n
txn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2)",\n                "Alexeï", "alex@example.com");
\n\n

MongoDB en C++ : approche orientée documents

\n\n

MongoDB est une base de données NoSQL qui stocke les données au format BSON (JSON binaire). Pour C++, il existe un pilote officiel mongocxx.

\n\n

Installation de mongocxx

\n\n

Installation sous Linux (nécessite d'installer d'abord le pilote C de MongoDB) :

\n\n
sudo apt-get install libmongoc-dev libbson-dev\ngit clone https://github.com/mongodb/mongo-cxx-driver.git\ncd mongo-cxx-driver\nmkdir build && cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release -DBSONCXX_POLY_USE_MNMLSTC=ON\nmake -j4\nsudo make install
\n\n

Connexion et opérations CRUD

\n\n

Le code suivant montre la connexion à

Blogs

Book Recommendations