العمل مع قواعد البيانات في C++: PostgreSQL و MongoDB للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في العمل مع قواعد البيانات بلغة C++

\n\n

نادراً ما تستغني التطبيقات الحديثة عن تخزين البيانات. C++ هي لغة برمجة أنظمة قوية، مناسبة تماماً للمشاريع عالية التحميل التي تعمل مع قواعد البيانات. في هذه المقالة، سنشرح كيفية الاتصال بنظامي إدارة قواعد بيانات شائعين — PostgreSQL العلائقية و MongoDB الموجهة للوثائق — وتنفيذ العمليات الأساسية (CRUD).

\n\n

المادة موجهة للمبتدئين: ستتعرف على المكتبات المطلوبة، وكيفية تثبيتها، وسترى أمثلة جاهزة للكود. بعد القراءة، ستتمكن من دمج C++ مع أي من قاعدتي البيانات هاتين بنفسك.

\n\n

PostgreSQL في C++: النهج العلائقي

\n\n

PostgreSQL هي واحدة من أكثر أنظمة إدارة قواعد البيانات العلائقية مفتوحة المصدر موثوقية. للعمل معها من C++، تُستخدم مكتبة libpqxx — الغلاف الرسمي لمكتبة libpq بلغة C.

\n\n

تثبيت libpqxx

\n\n

في Linux (Ubuntu/Debian)، يتم التثبيت بأمر واحد:

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

بالنسبة لـ Windows، يمكن استخدام vcpkg:

\n\n
vcpkg install libpqxx
\n\n

الاتصال وتنفيذ الاستعلام

\n\n

لننظر إلى مثال بسيط: الاتصال بقاعدة البيانات، إنشاء جدول، وإدراج البيانات.

\n\n
#include <iostream>\n#include <pqxx/pqxx>\n\nint main() {\n    try {\n        // الاتصال بقاعدة البيانات (استبدل المعلمات بمعلماتك)\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 << "تم الاتصال بـ PostgreSQL بنجاح!" << std::endl;\n        }\n\n        // إنشاء معاملة\n        pqxx::work txn(conn);\n\n        // إنشاء جدول\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        // إدراج البيانات\n        txn.exec("INSERT INTO users (name, email) VALUES "\n                 "('إيفان بيتروف', 'ivan@example.com'), "\n                 "('ماريا سميرنوفا', 'maria@example.com')");\n\n        // تأكيد المعاملة\n        txn.commit();\n        std::cout << "تمت إضافة البيانات بنجاح!" << std::endl;\n\n    } catch (const std::exception &e) {\n        std::cerr << "خطأ: " << e.what() << std::endl;\n        return 1;\n    }\n    return 0;\n}
\n\n

قراءة البيانات (SELECT)

\n\n

لاسترجاع البيانات، استخدم مكرر النتيجة:

\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

هام: استخدم دائماً الاستعلامات ذات المعلمات للحماية من حقن SQL:

\n\n
txn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2)",\n                "أليكسي", "alex@example.com");
\n\n

MongoDB في C++: النهج الموجه للوثائق

\n\n

MongoDB هي قاعدة بيانات NoSQL، تخزن البيانات بتنسيق BSON (JSON ثنائي). بالنسبة لـ C++، يوجد برنامج تشغيل رسمي يسمى mongocxx.

\n\n

تثبيت mongocxx

\n\n

التثبيت على Linux (يتطلب تثبيت MongoDB C Driver مسبقاً):

\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

الاتصال وعمليات CRUD

\n\n

يوضح الكود التالي الاتصال بـ

المدونات

توصيات الكتب