C++ und PostgreSQL: Vollständiger Leitfaden für Entwickler

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

C++ und PostgreSQL: Wie man Systemprogrammierung und relationale Datenbanken verbindet

\n\n

Haben Sie sich jemals gefragt, warum viele hochbelastete Systeme – von Spieleservern bis zu Finanzplattformen – die Kombination aus C++ und PostgreSQL wählen? Die Antwort ist einfach: C++ bietet blitzschnelle Geschwindigkeit und Speicherkontrolle, während PostgreSQL Zuverlässigkeit und leistungsstarke SQL-Funktionen bietet. Dies ist nicht nur "ein weiteres Tutorial". Es ist ein praktischer Leitfaden, der Sie von der Installation des Treibers bis zum Schreiben einer vollwertigen CRUD-Anwendung in C++ mit PostgreSQL führt.

\n\n

In diesem Artikel erfahren Sie:

\n
    \n
  • Wie Sie libpq – den offiziellen PostgreSQL-Client für C++ – installieren und konfigurieren.
  • \n
  • Wie Sie SELECT-, INSERT-, UPDATE- und DELETE-Abfragen ausführen.
  • \n
  • Wie Sie Fehler behandeln und mit Transaktionen arbeiten.
  • \n
  • Beispiele für echten Code, den Sie sofort in Ihren eigenen Projekten verwenden können.
  • \n
\n\n

Bereit? Los geht's!

\n\n

Schritt 1. Installation von libpq und Vorbereitung der Umgebung

\n\n

Bevor Sie Code schreiben, müssen Sie die Bibliothek libpq installieren. Sie ist Teil des Client-Teils von PostgreSQL. Wenn Sie PostgreSQL bereits installiert haben, ist libpq bereits vorhanden. Wenn nicht, installieren Sie es separat.

\n\n

Linux (Ubuntu/Debian)

\n
sudo apt update\nsudo apt install libpq-dev postgresql-server-dev-all
\n\n

macOS (Homebrew)

\n
brew install postgresql
\n\n

Windows

\n

Laden Sie das Installationsprogramm von der offiziellen PostgreSQL-Website herunter und wählen Sie bei der Installation die Komponente "Development Libraries".

\n\n

Überprüfen Sie nach der Installation, ob der Compiler g++ die Bibliothek finden kann. Dazu müssen Sie bei der Kompilierung die Flags -lpq (Linken mit libpq) und ggf. -I/Pfad/zum/include angeben.

\n\n

Schritt 2. Verbindung zur Datenbank in C++ herstellen

\n\n

Beginnen wir mit dem Wichtigsten – dem Herstellen einer Verbindung. Dazu werden die Struktur PGconn und die Funktion PQconnectdb() verwendet.

\n\n

Beispiel: Einfache Verbindung

\n
#include <iostream>\n#include <libpq-fe.h>\n\nint main() {\n    // Verbindungsparameter\n    const char* conninfo = "host=localhost port=5432 dbname=mydb user=myuser password=mypass";\n\n    // Verbindung herstellen\n    PGconn* conn = PQconnectdb(conninfo);\n\n    // Status prüfen\n    if (PQstatus(conn) != CONNECTION_OK) {\n        std::cerr << "Verbindungsfehler: " << PQerrorMessage(conn) << std::endl;\n        PQfinish(conn);\n        return 1;\n    }\n\n    std::cout << "Verbindung zu PostgreSQL erfolgreich!" << std::endl;\n\n    // Verbindung schließen\n    PQfinish(conn);\n    return 0;\n}
\n\n

Wichtig: Härten Sie niemals Passwörter im Code. Verwenden Sie Umgebungsvariablen oder Konfigurationsdateien. Das obige Beispiel dient der Veranschaulichung.

\n\n

Kompilieren wir:

\n
g++ -o connect connect.cpp -lpq
\n\n

Schritt 3. Ausführung von SQL-Abfragen: SELECT, INSERT, UPDATE, DELETE

\n\n

Nachdem die Verbindung hergestellt ist, lernen wir, Abfragen auszuführen. Dazu wird die Funktion PQexec() verwendet, die das Ergebnis in Form einer Struktur PGresult zurückgibt.

\n\n

Beispiel: Ausführung von SELECT

\n
PGresult* res = PQexec(conn, "SELECT id, name, age FROM users");\n\nif (PQresultStatus(res) != PGRES_TUPLES_OK) {\n    std::cerr << "Abfragefehler: " << PQerrorMessage(conn) << std::endl;\n    PQclear(res);\n    PQfinish(conn);\n    return 1;\n}\n\n// Anzahl der Zeilen und Spalten abrufen\nint rows = PQntuples(res);\nint cols = PQnfields(res);\n\n// Spaltenüberschriften ausgeben\nfor (int i = 0; i < cols; ++i) {\n    std::cout << PQfname(res, i) << "\\t";\n}\nstd::cout << std::endl;\n\n// Daten ausgeben\nfor (int i = 0; i < rows; ++i) {\n    for (int j = 0; j < cols; ++j) {\n        std::cout << PQgetval                

Blogs

Buchempfehlungen