Как идентифицировать программно в приложении QML, где находится файл базы данных sqlite
У меня есть приложение QML, которое также использует C++ . Из C++ мне нужно подключиться к БД ( sqlite) . Для этого мне нужно знать точное имя и местонахождение файла базы данных. Как это определить? Или как подключиться из C++ в SQLite без этого точного местоположения?
Тем временем я искал и нашел это. Поэтому я предлагаю этот способ определить это:
$HOME/.local/share/myapplicationname/Database/filewithextension.sqlite
The database was created from the application from javascript using this command: db = LocalStorage.openDatabaseSync("OwnDict.db", "", "App NAme", 100000);
1 ответ
Базы данных, созданные из QML LocalStorage, сохраняются в ~/.local/share/<appid>/Databases/
где applicationName
в вашем MainView
, Базы данных имеют шестнадцатеричные имена и расширение .sqlite. У каждого есть связанный INI- файл с именем и описанием из первого и третьего аргументов openDatabaseSync
,
Если вы создаете только одну базу данных через LocalStorage, в этом каталоге, конечно же, будет только одна база данных. Если вы создаете больше, вам, возможно, придется проанализировать файлы .ini, чтобы найти правильный. Однако в моем ограниченном тестировании файлы базы данных, кажется, получают детерминированные имена файлов, поэтому вы можете определить имя файла на своем устройстве и затем жестко закодировать это значение в коде C++.