Gibt es ein Qt SQLite-Plugin zum Speichern der Datenbank im RAM über VFS (zum Laden der Datenbank aus der Qt-Ressourcendatei)?
Ich habe welche:/test.sqlite3
database inside.qrc
. Und das Ziel ist es, diese Datenbank direkt im Programm zu verwenden. Datenbank wird nur zum Lesen verwendet.
QSqlDatabase::setDatabase(":/test.sqlite3")
funktioniert nicht, da Qt SQLite nicht für die Arbeit mit dem Qt-Dateisystem entwickelt wurde.
Eine der Lösungen kopiert die Datenbank von.qrc
inD:\temdb.sqlite3
und benutze es vonQSqlDatabase::setDatabase("D:\\temdb.sqlite3")
. Das Programm darf jedoch nicht mit dem Dateisystem des Betriebssystems funktionieren.
Zweite Lösung speichert:/dump.sql
in Ressourcen, dann In-Memory-Datenbank von @ erstellQSqlDatabase::setDatabase(":memory:")
und Importieren von Dump darin durch Lesen und Ausführen von Zeilen aus:/dump.sql
. Aber diese Methode ist langsam.
Und schließlich ist es ein schwieriger, aber wahrer Weg, ein eigenes Qt-Plugin für SQLite mit @ zu erstelleVFS
Implementierung zum Lesen der Datenbank aus dem RAM, wo wir Bytes von @ hab":/test.sqlite3"
.
Gibt es einen anderen einfachen Weg?
P.S. Ich habe schon alle fragen gelesen wieUmwandlung der In-Memory-SQLite-Datenbank in ein Blob / Char-Array und andere, kennzeichnen Sie es also nicht als doppelt. Meine Frage bezieht sich auf andere Methoden.