परिचय: C++ डेवलपर को डेटाबेस की आवश्यकता क्यों है?
C++ सबसे शक्तिशाली प्रोग्रामिंग भाषाओं में से एक है, जिसका उपयोग उच्च-लोड सिस्टम, गेम, वित्तीय एप्लिकेशन और एम्बेडेड सॉफ़्टवेयर बनाने के लिए किया जाता है। हालाँकि, किसी भी गंभीर एप्लिकेशन को डेटा संग्रहण की आवश्यकता होती है। यहीं पर डेटाबेस प्रबंधन प्रणालियाँ (DBMS) काम आती हैं।
इस लेख में, हम समझेंगे कि C++ का उपयोग करके दो लोकप्रिय DBMS - रिलेशनल PostgreSQL और डॉक्यूमेंट-ओरिएंटेड MongoDB से कैसे कनेक्ट किया जाए और बुनियादी संचालन कैसे किए जाएँ। यह सामग्री शुरुआती डेवलपर्स के लिए है जो पहले से C++ की मूल बातों से परिचित हैं, लेकिन अभी तक डेटाबेस के साथ काम नहीं किया है। आप सीखेंगे कि आवश्यक लाइब्रेरी कैसे स्थापित करें, सरल CRUD-क्वेरी कैसे लिखें और सामान्य गलतियों से कैसे बचें।
1. वातावरण तैयार करना और लाइब्रेरी का चयन
कोड लिखने से पहले, डेटाबेस के साथ काम करने के लिए क्लाइंट लाइब्रेरी स्थापित करना आवश्यक है। C++ के लिए कई विकल्प हैं, लेकिन हम सबसे लोकप्रिय और स्थिर विकल्पों पर विचार करेंगे:
- PostgreSQL के लिए —
libpqxx(libpq पर आधिकारिक C++ रैपर)। - MongoDB के लिए —
mongocxx(MongoDB का आधिकारिक C++ ड्राइवर)।
libpqxx स्थापित करना (Ubuntu/Debian)
sudo apt-get updatesudo apt-get install libpqxx-devWindows या macOS के लिए, vcpkg या Homebrew पैकेज मैनेजर का उपयोग करें।
mongocxx स्थापित करना
पहले बेस ड्राइवर mongo-c-driver स्थापित करें, फिर C++ ड्राइवर:
# Ubuntusudo apt-get install libmongoc-dev libbson-devsudo apt-get install libmongocxx-devस्थापना के बाद, सुनिश्चित करें कि कंपाइलर हेडर फ़ाइलों को देख सके। संकलन करते समय लिंकिंग फ़्लैग निर्दिष्ट करना न भूलें:
g++ -std=c++17 main.cpp -lpqxx -lpq -lmongocxx -lbson2. C++ में PostgreSQL के साथ काम करना
PostgreSQL एक शक्तिशाली ऑब्जेक्ट-रिलेशनल DBMS है। हम libpqxx लाइब्रेरी का उपयोग करेंगे, जो एक सुविधाजनक C++ इंटरफ़ेस प्रदान करती है।
सर्वर से कनेक्शन और तालिका बनाना
पहले एक सरल प्रोग्राम लिखते हैं जो स्थानीय डेटाबेस से कनेक्ट होता है और उपयोगकर्ताओं की तालिका बनाता है:
#include <iostream>#include <pqxx/pqxx>
int main() { try { // "postgres" उपयोगकर्ता के रूप में "testdb" डेटाबेस से कनेक्ट करें pqxx::connection conn("host=localhost dbname=testdb user=postgres password=secret"); if (conn.is_open()) { std::cout << "PostgreSQL से कनेक्शन सफल!" << std::endl; }
// एक ट्रांज़ेक्शन बनाएँ pqxx::work txn(conn);
// तालिका बनाने के लिए SQL-क्वेरी txn.exec("CREATE TABLE IF NOT EXISTS users (" "id SERIAL PRIMARY KEY," "name VARCHAR(100) NOT NULL," "email VARCHAR(100) UNIQUE NOT NULL);");
txn.commit(); // परिवर्तनों को स्थायी करें std::cout << "users तालिका बनाई गई।" << std::endl;
} catch (const std::exception &e) { std::cerr << "त्रुटि: " << e.what() << std::endl; } return 0;}CRUD-संचालन: डेटा सम्मिलित करना और पढ़ना
कुछ रिकॉर्ड जोड़ें और चयन करें:
pqxx::work txn(conn);
// डेटा सम्मिलित करनाtxn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2);", "इवान पेट्रोव", "ivan@example.com");txn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2);", "मारिया स्मिर्नोवा", "maria@example.com");txn.commit();
// डेटा पढ़नाpqxx::nontransaction ntxn(conn);pqxx::result result = ntxn.exec("SELECT id, name, email FROM users;");
for (auto row : result) { std::cout << "ID: " << row[0].as<int>() << ", नाम: " << row[1].as<std::string>() << ", ईमेल: " <<