有没有办法在不知道绝对路径的情况下引用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
附加到实际目录。
最佳答案
当您使用 SQLite 作为后端创建 QSqlDatabase 时,您有两个选择:
- 给出一个绝对路径作为数据库名称
- 给出一个相对路径:在这种情况下,数据库将保存在您的二进制文件的目录中。
所以你必须知道你的数据库的绝对路径。
编辑
如果您最初知道数据库应该位于何处,您可以对其进行硬编码(这绝不是明智的),或者您可以创建一个配置并使用 QSettings 加载它。例如:
QSettings settings;
QString dbPath = settings.readValue("DBPath", QString(/*fallback path*/)).toString();
//do smth with dbPath
进一步看here
关于database - 没有绝对路径的Qt SQLite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8975405/