如何在QT上将SQLite导出到apk?

时间:2016-04-04 06:45:08

标签: android qt sqlite qml

我正在使用Qt.First开发Android应用程序。

我在MinGW上运行它,然后将其发布到Android版本。我的应用程序在SQLite数据库上进行选择,插入,更新操作。这在MinGW中运行良好,但是当我导出到Android时,没有任何效果。

我已将SQLite文件复制到资源,但我无法读取SQLite。

1 个答案:

答案 0 :(得分:1)

将数据库文件添加到assets文件夹后,还应将这些文件添加到.pro文件中:

deployment.files += myfile.sqlite
deployment.path = /assets
INSTALLS += deployment

但资产中的文件是只读的。所以你应该先将它复制到其他位置。这可以在第一个应用程序启动时完成一次:

QFile dfile("./myfile.sqlite");
if (!dfile.exists())
{
     QFile::copy("assets:/myfile.sqlite", "./myfile.sqlite");
     QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}

您还可以使用Qt资源系统,这是一个跨平台的解决方案。默认情况下,所有Qt应用程序都可以使用:/前缀或URL方案前缀qrc:来访问qrc文件的内容。所以你需要的是将sqlite文件添加到项目资源文件中,然后将其复制到某个位置并在之后使用它:

QFile dfile("./myfile.sqlite");
if (!dfile.exists())
{
     QFile::copy(":/myfile.sqlite", "./myfile.sqlite");
     QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}