2016-04-04 11 views
2

Ich entwickle eine Android App mit Qt.First.Wie exportiert man SQLite in Apk auf QT?

Ich habe es auf MinGW ausgeführt und dann auf Android Build veröffentlicht. Meine App macht Auswahl, Einfügen, Update-Operation auf SQLite Datenbank. Das funktioniert gut in MinGW, aber wenn ich nach Android exportiert habe, gibt es keinen Effekt.

Ich habe SQLite-Datei in Assets kopiert, aber ich kann SQLite nicht lesen.

Antwort

1

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); 
} 
+0

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 –

+0

Nejat Ich habe Ihren Code vor der Datenbankabfrage.Alle Abfrage dieser Code wird sich auswirken.It ist ein Fehler? –

+0

@ 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

Verwandte Themen