我有一个 QML 应用程序,它也使用 C++。我需要从 C++ 连接到 DB (sqlite)。为此,我需要知道数据库文件的确切名称和位置。如何识别它?或者如何在没有这个确切位置的情况下从 C++ 连接到 SQLite?
与此同时,我搜索并发现这所以我建议用这种方法来识别它:
$HOME/.local/share/myapplicationname/Database/filewithextension.sqlite
该数据库是使用以下命令从 javascript 应用程序创建的:db = LocalStorage.openDatabaseSync("OwnDict.db", "", "App NAme", 100000);
答案1
从 QML LocalStorage 创建的数据库保存~/.local/share/<appid>/Databases/
在<应用程序ID>是applicationName
你的MainView
。数据库有十六进制名称和扩展名.sqlite. 每个都有一个相关的.ini文件,其名称和描述来自第一个和第三个参数openDatabaseSync
。
如果你只通过 LocalStorage 创建一个数据库,那么这个目录中当然只有一个数据库。如果你创建了更多数据库,你可能需要解析.ini文件来找到正确的文件。但是,在我有限的测试中,数据库文件似乎具有确定性的文件名,因此您可能能够找出设备上的文件名,然后将该值硬编码到 C++ 代码中。