Arbeit mit Datenbanken in C++: PostgreSQL und MongoDB für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die Arbeit mit Datenbanken in C++

\n\n

Moderne Anwendungen kommen selten ohne Datenspeicherung aus. C++ ist eine leistungsstarke Systemprogrammiersprache, die sich hervorragend für hochbelastete Projekte eignet, die mit Datenbanken arbeiten. In diesem Artikel werden wir untersuchen, wie man eine Verbindung zu zwei beliebten DBMS herstellt – dem relationalen PostgreSQL und dem dokumentenorientierten MongoDB – und grundlegende Operationen (CRUD) durchführt.

\n\n

Das Material richtet sich an Anfänger: Sie erfahren, welche Bibliotheken benötigt werden, wie man sie installiert, und sehen fertige Codebeispiele. Nach der Lektüre können Sie C++ selbstständig mit einer dieser Datenbanken integrieren.

\n\n

PostgreSQL in C++: Relationaler Ansatz

\n\n

PostgreSQL ist eines der zuverlässigsten relationalen Open-Source-DBMS. Für die Arbeit damit in C++ wird die Bibliothek libpqxx verwendet – ein offizieller Wrapper um die C-Bibliothek libpq.

\n\n

Installation von libpqxx

\n\n

Unter Linux (Ubuntu/Debian) erfolgt die Installation mit einem Befehl:

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

Für Windows kann vcpkg verwendet werden:

\n\n
vcpkg install libpqxx
\n\n

Verbindung und Ausführung einer Abfrage

\n\n

Betrachten wir ein einfaches Beispiel: Verbindung zur Datenbank, Erstellen einer Tabelle und Einfügen von Daten.

\n\n
#include <iostream>\n#include <pqxx/pqxx>\n\nint main() {\n    try {\n        // Verbindung zur DB (Parameter durch eigene ersetzen)\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 << "Verbindung zu PostgreSQL erfolgreich!" << std::endl;\n        }\n\n        // Transaktion erstellen\n        pqxx::work txn(conn);\n\n        // Tabelle erstellen\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        // Daten einfügen\n        txn.exec("INSERT INTO users (name, email) VALUES "\n                 "('Ivan Petrov', 'ivan@example.com'), "\n                 "('Maria Smirnova', 'maria@example.com')");\n\n        // Transaktion festschreiben\n        txn.commit();\n        std::cout << "Daten erfolgreich hinzugefügt!" << std::endl;\n\n    } catch (const std::exception &e) {\n        std::cerr << "Fehler: " << e.what() << std::endl;\n        return 1;\n    }\n    return 0;\n}
\n\n

Daten lesen (SELECT)

\n\n

Für die Datenabfrage verwenden Sie den Ergebnis-Iterator:

\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

Wichtig: Verwenden Sie immer parametrisierte Abfragen zum Schutz vor SQL-Injection:

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

MongoDB in C++: Dokumentenorientierter Ansatz

\n\n

MongoDB ist eine NoSQL-Datenbank, die Daten im BSON-Format (binäres JSON) speichert. Für C++ gibt es den offiziellen Treiber mongocxx.

\n\n

Installation von mongocxx

\n\n

Installation unter Linux (erfordert vorherige Installation des MongoDB C-Treibers):

\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

Verbindung und CRUD-Operationen

\n\n

Der folgende Code demonstriert die Verbindung zu

Blogs

Buchempfehlungen