我遇到了以下问题:我正在开发一个跨平台应用程序(Linux / Android),而且我一直在将我的SQLite数据库部署到Android - 它非常适合Linux。我设法通过我的.pro文件中的以下代码将我的db文件添加到资源
deployment.files += rako.db
deployment.path = /assets
INSTALLS += deployment
现在在我处理数据库连接的DbManager C ++文件中,我无法运行SQLite数据库:(
db_.setDatabaseName("assets:/rako.db");
我错过了什么吗?
多谢你们,
马克斯
我错过了什么吗?
其实,是。假设您的assets
文件夹位于android
文件夹下,您应该在pro
文件的下一行添加:
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
qazxsw poi文件夹的所有内容将被复制到qazxsw poi。
接下来是Android上的android
是只读文件夹。因此,在使用数据库之前,您应该将它从apk
复制到另一个位置。
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上做同样的事情?
在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