C++ में डेटाबेस के साथ कार्य: PostgreSQL और MongoDB

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में डेटाबेस के साथ कार्य: PostgreSQL और MongoDB



C++ में आधुनिक एप्लिकेशन शायद ही कभी डेटाबेस के साथ इंटरैक्शन के बिना चलते हैं। चाहे आप हाई-लोड सर्वर, एनालिटिक्स सिस्टम या एम्बेडेड सॉफ्टवेयर विकसित कर रहे हों, रिलेशनल (PostgreSQL) और डॉक्यूमेंट-ओरिएंटेड (MongoDB) DBMS के साथ काम करने की क्षमता एक अनिवार्य कौशल है। इस लेख में, हम व्यावहारिक उदाहरणों के साथ दोनों सिस्टमों के लिए कनेक्शन, क्वेरी निष्पादन और त्रुटि प्रबंधन पर चर्चा करेंगे।



1. पर्यावरण तैयार करना और लाइब्रेरी का चयन



C++ में PostgreSQL के साथ काम करने के लिए डी-फैक्टो मानक लाइब्रेरी libpqxx है। MongoDB के लिए आधिकारिक ड्राइवर mongocxx है (जो libmongoc पर आधारित है)।



libpqxx स्थापित करना (Linux / macOS)

# Ubuntu / Debiansudo apt-get install libpqxx-dev

# macOS (Homebrew)brew install libpqxx


mongocxx स्थापित करना (Linux / macOS)

# पहले libmongoc और boost स्थापित करना आवश्यक हैsudo apt-get install libmongoc-1.0-0 libbson-1.0 libmongocxx-dev

# macOSbrew install mongo-cxx-driver


Windows के लिए vcpkg का उपयोग करें या आधिकारिक रिपॉजिटरी से प्री-कंपाइल्ड बिल्ड डाउनलोड करें।



2. libpqxx के माध्यम से PostgreSQL के साथ कार्य



libpqxx लाइब्रेरी C-ड्राइवर libpq के ऊपर एक सुविधाजनक C++ इंटरफ़ेस प्रदान करती है। मुख्य क्लासेस: connection, work (ट्रांजेक्शन), result।



डेटाबेस से कनेक्शन

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

int main() { try { // कनेक्शन स्ट्रिंग: "dbname=test user=postgres password=secret hostaddr=127.0.0.1 port=5432" pqxx::connection conn("dbname=testdb user=myuser password=mypass hostaddr=localhost"); if (conn.is_open()) { std::cout << "Connected to PostgreSQL: " << conn.dbname() << std::endl; } } catch (const std::exception &e) { std::cerr << "Connection error: " << e.what() << std::endl; return 1; } return 0;}


क्वेरी निष्पादन (CRUD)

void createTable(pqxx::connection &conn) {    pqxx::work txn(conn);    txn.exec("CREATE TABLE IF NOT EXISTS users ("             "id SERIAL PRIMARY KEY,"             "name VARCHAR(100) NOT NULL,"             "email VARCHAR(255) UNIQUE,"             "age INT"             ")");    txn.commit();}

void insertUser(pqxx::connection &conn, const std::string &name, const std::string &email, int age) { pqxx::work txn(conn); // SQL इंजेक्शन से बचाव के लिए पैरामीटराइज्ड क्वेरी का उपयोग करें txn.exec_params("INSERT INTO users (name, email, age) VALUES ($1, $2, $3)", name, email, age); txn.commit(); std::cout << "User inserted." << std::endl;}

void selectUsers(pqxx::connection &conn) { pqxx::nontransaction txn(conn); pqxx::result result = txn.exec("SELECT id, name, email, age FROM users"); for (auto row : result) { std::cout << "ID: " << row["id"].as<int>() << ", Name: " << row["name"].as<std::string>() << ", Email: " << row["email"].as<std::string>() << ", Age: " << row["age"].as<int>() << std::endl; }}


त्रुटि प्रबंधन

सभी ऑपरेशनों को try-catch में लपेटें। libpqxx pqxx::sql_error, pqxx::broken_connection और अन्य क्लासेस के अपवाद उत्पन्न करता है।



3. mongocxx के माध्यम से MongoDB के साथ कार्य



mongocxx ड्राइवर आधुनिक C++17 का उपयोग करता है। मुख्य एंटिटीज: client, database, collection, document (bsoncxx के माध्यम से)।



कनेक्शन और कलेक्शन प्राप्त करना

#include <ios                

ब्लॉग

पुस्तक अनुशंसाएँ