2016-08-05 51 views
0

我有以下問題: 我開發一個跨平臺的應用程序(的Linux/Android)和我被困在部署我的SQLite數據庫到Android - 它工作得很好適用於Linux 。 我設法我的數據庫文件,通過下面的代碼在我的.pro文件添加到資產現在部署到SQLite的Android應用程序(QT)

deployment.files += rako.db 

deployment.path = /assets 

INSTALLS += deployment 

在我處理我的數據庫連接,我沒能得到SQLite數據庫運行我DbManager C++文件: ( [...]

db_.setDatabaseName("assets:/rako.db"); 

難道我錯過了什麼?

謝謝你們,

最大

回答

0

難道我錯過了什麼?

其實,是的。 假設你assets文件夾是android文件夾下你應該添加在你pro文件下一行:

ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android 

FO android文件夾中的所有內容將被複制到apk

接下來的事情是,assests在Android是隻讀的文件夾中。所以在使用數據庫之前,您應該將其從assets複製到另一個位置。

0
QFile dfile("assets:/db/database-last.db3"); 
if (dfile.exists()) 
{ 
    dfile.copy("./database-last.db3"); 
    QFile::setPermissions("./database-last.db3",QFile::WriteOwner |  QFile::ReadOwner); 
} 

...

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
db.setDatabaseName("./database-last.db3"); 
db.open(); 

...

在.pro文件

deployment.files += database-last.db3 
deployment.path = /assets/db 
INSTALLS += deployment 

它適用於Android,但如何在iOS和Winphone做一樣的嗎?