我正在使用Qt.First开发Android应用程序。
我在MinGW上运行它,然后将其发布到Android版本。我的应用程序在SQLite
数据库上进行选择,插入,更新操作。这在MinGW中运行良好,但是当我导出到Android时,没有任何效果。
我已将SQLite文件复制到资源,但我无法读取SQLite。
答案 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);
}