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 libpqxxmongocxx स्थापित करना (Linux / macOS)
# पहले libmongoc और boost स्थापित करना आवश्यक हैsudo apt-get install libmongoc-1.0-0 libbson-1.0 libmongocxx-dev
# macOSbrew install mongo-cxx-driverWindows के लिए 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