die Datenbankdatei Assets Ordner Nach dem Hinzufügen, sollten Sie auch diese an Ihre .pro-Datei hinzu:
deployment.files += myfile.sqlite
deployment.path = /assets
INSTALLS += deployment
Aber die Dateien in Assets sind schreibgeschützt. Du solltest es also zuerst an einen anderen Ort kopieren. Dies könnte einmal auf der ersten App Start erfolgen:
QFile dfile("./myfile.sqlite");
if (!dfile.exists())
{
QFile::copy("assets:/myfile.sqlite", "./myfile.sqlite");
QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}
Sie auch die Qt Ressourcensystem verwenden können, die eine plattformübergreifende Lösung. Standardmäßig können alle Qt-Anwendungen auf den Inhalt einer QRC-Datei mit dem Präfix :/
oder dem URL-Schema-Präfix qrc:
zugreifen. Also alles, was Sie brauchen, ist die SQLite-Datei zum Projekt-Ressource-Datei hinzuzufügen und einmal kopieren Sie sie in irgendeiner Stelle und verwenden Sie es danach:
QFile dfile("./myfile.sqlite");
if (!dfile.exists())
{
QFile::copy(":/myfile.sqlite", "./myfile.sqlite");
QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}
Dank nejat.I Ihre suggesstion machen vor :) diesen Link: http: // stackoverflow.com/questions/23423152/qt-how-connect-to-an-existing-sqllite-file-in-android-os. Aber es gibt keine Idee –
Nejat Ich habe Ihren Code vor der Datenbankabfrage.Alle Abfrage dieser Code wird sich auswirken.It ist ein Fehler? –
@ DJ.Yosemite der obige Code sollte noch vor dem Aufruf von 'QSqlDatabase :: addDatabase' sein. Der Code in der if-Anweisung wird einmal ausgeführt, wenn die App zum ersten Mal gestartet wird. – Nejat