适用于Android App的嵌入式SQLite数据库(Qt)

问题描述 投票:2回答:3

我遇到了以下问题:我正在开发一个跨平台应用程序(Linux / Android),而且我一直在将我的SQLite数据库部署到Android - 它非常适合Linux。我设法通过我的.pro文件中的以下代码将我的db文件添加到资源

deployment.files += rako.db

deployment.path = /assets

INSTALLS += deployment

现在在我处理数据库连接的DbManager C ++文件中,我无法运行SQLite数据库:(

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

我错过了什么吗?

多谢你们,

马克斯

android database qt sqlite qt5
3个回答
0
投票

我错过了什么吗?

其实,是。假设您的assets文件夹位于android文件夹下,您应该在pro文件的下一行添加:

ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android

qazxsw poi文件夹的所有内容将被复制到qazxsw poi。

接下来是Android上的android是只读文件夹。因此,在使用数据库之前,您应该将它从apk复制到另一个位置。


0
投票
assests

...

assets

...

在.pro文件中

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

它适用于Android,但如何在iOS和Winphone上做同样的事情?


0
投票

在dbmanager cpp文件中

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

.pro文件

 deployment.files += database-last.db3
 deployment.path = /assets/db
 INSTALLS += deployment
© www.soinside.com 2019 - 2024. All rights reserved.