SQLite क्या है और C++ में इसकी आवश्यकता क्यों है?
SQLite एक हल्का, एम्बेडेड रिलेशनल डेटाबेस है जिसे किसी अलग सर्वर प्रोसेस की आवश्यकता नहीं होती। MySQL या PostgreSQL के विपरीत, SQLite सीधे डिस्क पर डेटाबेस फ़ाइल के साथ काम करता है, जो इसे डेस्कटॉप ऐप्स, मोबाइल डिवाइस, एम्बेडेड सिस्टम और छोटे वेब प्रोजेक्ट्स के लिए आदर्श बनाता है।
C++ भाषा में SQLite के साथ काम करने के कई तरीके हैं। सबसे लोकप्रिय और स्थिर तरीका आधिकारिक sqlite3 लाइब्रेरी (C API) का उपयोग करना है, जो C फंक्शन्स के सेट के रूप में आती है। हालांकि, C++ में अधिक सुविधाजनक काम के लिए SQLiteCpp या sqlite_modern_cpp जैसे रैपर का उपयोग किया जाता है। इस लेख में हम सीधे C API (sqlite3 लाइब्रेरी) पर ध्यान केंद्रित करेंगे, क्योंकि यह अधिकतम नियंत्रण और प्रक्रियाओं की समझ देता है।
SQLite के मुख्य लाभ:
- शून्य कॉन्फ़िगरेशन: सर्वर इंस्टॉल और सेटअप करने की ज़रूरत नहीं।
- पोर्टेबिलिटी: डेटाबेस एक ही फ़ाइल है।
- विश्वसनीयता: ट्रांज़ैक्शन (ACID) का समर्थन।
- गति: अधिकांश ऑपरेशनों में क्लाइंट-सर्वर DB से तेज़।
- आकार: लाइब्रेरी 600 KB से कम जगह लेती है।
C++ के लिए SQLite इंस्टॉलेशन
इंस्टॉलेशन आपके ऑपरेटिंग सिस्टम और कंपाइलर पर निर्भर करता है। हम तीन मुख्य तरीकों पर चर्चा करेंगे।
1. पैकेज मैनेजर के माध्यम से इंस्टॉल (Linux/macOS)
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install libsqlite3-dev
macOS (Homebrew):
brew install sqlite3
Fedora:
sudo dnf install sqlite-devel
2. Windows पर इंस्टॉल (vcpkg)
यदि आप vcpkg का उपयोग करते हैं:
vcpkg install sqlite3:x64-windows
vcpkg integrate install
इसके बाद Visual Studio में #include <sqlite3.h> जोड़ सकते हैं।
3. सोर्स कोड से कंपाइल (सार्वभौमिक तरीका)
आधिकारिक साइट sqlite.org से sqlite3.c और sqlite3.h फ़ाइलें डाउनलोड करें। फिर उन्हें अपने प्रोजेक्ट में जोड़ें:
g++ main.cpp sqlite3.c -o myapp -lpthread -ldl
Windows पर अतिरिक्त -lws2_32 फ़्लैग की आवश्यकता हो सकती है।
त्वरित शुरुआत: C++ में SQLite के साथ पहला प्रोग्राम
एक सरल कंसोल ऐप बनाते हैं जो डेटाबेस खोलता है, टेबल बनाता है और एक रिकॉर्ड इंसर्ट करता है।
#include <iostream>
#include <sqlite3.h>
int main() {
sqlite3 *db;
char *errMsg = 0;
// 1. डेटाबेस खोलें (या बनाएं)
int rc = sqlite3_open("test.db", &db);
if (rc) {
std::cerr << "डेटाबेस खोलने में त्रुटि: " << sqlite3_errmsg(db) << std::endl;
return 1;
}
// 2. टेबल बनाएं
const char *sqlCreate = "CREATE TABLE IF NOT EXISTS users ("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"name TEXT NOT NULL, "
"age INTEGER);";
rc = sqlite3_exec(db, sqlCreate, 0, 0, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL त्रुटि: " << errMsg << std::endl;
sqlite3_free(errMsg);
sqlite3_close(db);
return 1;
}
// 3. डेटा इंसर्ट करें
const char *sqlInsert = "INSERT INTO users (name, age) VALUES ('Alice', 30);";
rc = sqlite3_exec(db, sqlInsert, 0, 0, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "इंसर्ट त्रुटि: " << errMsg << std::endl;
sqlite3_free(errMsg);
} else {
std::cout << "रिकॉर्ड जोड़ा गया, ID: " << sqlite3_last_insert_rowid(db) << std पुस्तकालय में भी
Kotlin मानक पुस्तकालय: एक संपूर्ण अवलोकन
iOS और macOS पर Swift में Excel के साथ काम करें: लाइब्रेरी और उदाहरण
Rust में XML के साथ कार्य: quick-xml, roxmltree और serde_xml_rs लाइब्रेरीज़
जावा में तिथियों के साथ कार्य: java.time और Joda-Time