有没有办法在不知道绝对路径的情况下引用database.sqlite文件?
_db = QSqlDatabase::addDatabase("QSQLITE");
_db.setDatabaseName("/the/path/i/dont/know/database.sqlite");
我已经尝试将database.sqlite添加到Resources文件夹并通过qrc:
调用它,但显然无法写入资源文件。
我也尝试使用QApplication::applicationDirPath();
,但这会导致不同的路径,具体取决于用户的操作系统。例如。它将MyApp.app/Contents/MacOS
附加到实际目录。
答案 0 :(得分:2)
当您使用SQLite作为后端创建QSqlDatabase时,您有两个选择:
所以你必须知道你的数据库的绝对路径。
修改强>
如果您最初知道数据库应该位于何处,您可以对其进行硬编码(这绝不是明智的),也可以创建配置并使用QSettings加载它。例如:
QSettings settings;
QString dbPath = settings.readValue("DBPath", QString(/*fallback path*/)).toString();
//do smth with dbPath
进一步了解here
答案 1 :(得分:0)
如果你想为每个用户存储数据库,请大喊:
QDesktopServices::storageLocation(QDesktopServices::DataLocation)
此方法返回可以存储持久性应用程序数据的位置。
有关详细信息,请查看以下内容:http://doc.trolltech.com/4.5/qdesktopservices.html#storageLocation