database - 没有绝对路径的Qt SQLite数据库

标签 database qt sqlite resources absolute-path

有没有办法在不知道绝对路径的情况下引用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/

相关文章:

java - 使用 JPA 进行数据库设计

java - 使用android room时出现错误: incompatible types: <null> cannot be converted to int if (! _cursor.isNull(null))

c++ - 我如何在 Qt 中向 QComboBox 添加图标?

android - sqlite 浏览器 : where is the db file?

android - SQLite 删除一行

mysql - 获取与至少一名其他员工同时进入项目的所有员工的名字和姓氏

MongoDB 读取性能差

c++ - 如何检测桌面应用程序是否已被修改?

c++ - 来自 .ui 文件的 Qt : How to generate . h 和 .cpp - Vim 和 Qt 实用吗?

sql - 选择按计数排序但没有计数的列