मेरे पास डेटाबेस .qrc
के अंदर है। और लक्ष्य सीधे प्रोग्राम में इस डेटाबेस का उपयोग करना है। डेटाबेस केवल पढ़ने के लिए उपयोग किया जाता है।क्या VFS द्वारा रैम में डेटाबेस संग्रहीत करने के लिए कोई Qt SQLite प्लगइन है (Qt संसाधन फ़ाइल से डेटाबेस लोड करने के लिए)?
QSqlDatabase::setDatabase(":/test.sqlite3")
काम नहीं करता है, क्योंकि क्यूटी SQLite Qt के फाइल सिस्टम के साथ काम करने के लिए डिज़ाइन नहीं किया गया है।
समाधानों में से एक .qrc
से डेटाबेस को D:\temdb.sqlite3
में कॉपी कर रहा है और इसे QSqlDatabase::setDatabase("D:\\temdb.sqlite3")
द्वारा उपयोग कर रहा है। लेकिन कार्यक्रम ओएस फाइल सिस्टम के साथ काम नहीं करना चाहिए।
दूसरा समाधान संसाधनों में :/dump.sql
भंडारण है, तो QSqlDatabase::setDatabase(":memory:")
द्वारा में स्मृति डेटाबेस बनाने और इसे में पढ़ने से डंप आयात और :/dump.sql
से लाइनों को क्रियान्वित। लेकिन यह विधि धीमी है।
और, आखिरकार, कठिन लेकिन सही तरीका रैम से डेटाबेस पढ़ने के लिए VFS
कार्यान्वयन के साथ SQLite के लिए स्वयं क्यूटी प्लगइन बना रहा है, जहां हमारे पास ":/test.sqlite3"
के बाइट हैं।
क्या कोई और आसान तरीका है?
पीएस मैंने पहले से ही Converting in-memory sqlite database to blob/char array और अन्य सभी प्रश्नों को पढ़ लिया है, इसलिए इसे डुप्लिकेट के रूप में चिह्नित न करें। मेरा सवाल किसी अन्य तरीकों के बारे में है।
"आसान" तरीका, नहीं। लेकिन स्क्लाइट अपने स्वयं के वीएफएस अबास्ट्रक्शन के साथ आता है, इसलिए सिद्धांत रूप में इसे सीधे क्यूटी के संसाधनों में देखना संभव है। – peppe
@peppe कोई उदाहरण हैं? विश्वास नहीं कर सकता कि किसी ने अभी तक कोड नहीं किया है :) – Rinat
यदि आप संपूर्ण डेटा सेट को स्मृति में रखने की योजना बनाते हैं, तो एसक्यूएल का उपयोग करके उस संभवतः कम से कम कुशल कोर्स ले सकते हैं। आप नियमित रूप से डेटा को नियमित C++ कंटेनरों में पढ़ सकते हैं और अधिक बेहतर पहुंच समय का आनंद ले सकते हैं। – dtech