我想创建一个具有 C++ 后端并使用 sqlite3 的应用程序。我可以使用以下代码连接到内存中的数据库:m_db = QSqlDatabase::addDatabase("QSQLITE"); m_db.setDatabaseName(":memory:"); m_db.open();
但我不知道我必须使用什么路径或者我必须做什么才能在我的手机上创建一个本地数据库文件。如果我在我的计算机上运行该应用程序,我可以用":memory:"
我想要的任何路径替换。
谢谢
我想创建一个具有 C++ 后端并使用 sqlite3 的应用程序。我可以使用以下代码连接到内存中的数据库:m_db = QSqlDatabase::addDatabase("QSQLITE"); m_db.setDatabaseName(":memory:"); m_db.open();
但我不知道我必须使用什么路径或者我必须做什么才能在我的手机上创建一个本地数据库文件。如果我在我的计算机上运行该应用程序,我可以用":memory:"
我想要的任何路径替换。
谢谢
我从对这个问题的评论中得到了线索,我再也找不到了。
如果您想写入/读取文件系统,您必须注意 Ubuntu 的应用程序限制。一个普通的不受操作系统信任的应用程序只能写入一些有限的“私有”目录并从更多目录中读取。您可以使用QStandardPaths类来查找这些目录。例如,要获取我使用的可写数据目录
QStandardPaths::writableLocation(QStandardPaths::DataLocation)
,并与QStandardPaths::standardLocations(QStandardPaths::DataLocation)
您一起获取所有可读数据目录。它适用于我在可写数据目录中创建我的 sqlite3 文件。顺便说一句:您可以使用QStandardPaths为您的应用程序获取其他类型的目录(例如 temp、cache 等)。
Ubuntu 的应用程序限制可在此处获得。