【问题标题】:Where can I store an SQLite database on Windows and OS X?我在哪里可以在 Windows 和 OS X 上存储 SQLite 数据库?
【发布时间】:2017-05-26 16:19:30
【问题描述】:

我正在开发一个 Qt 应用程序,它将在 WindowsOS X 上分发。

应用程序使用 SQLite 数据库。我在哪里可以将数据库文件保存在两个系统上,以免在应用程序更新期间被覆盖?

注意 1: 我已经为 OS X 找到了类似的 question。答案是使用以下命令将其保存在 Application Support 中:

NSString * supportDir = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDir‌​ectory, NSUserDomainMask, YES) lastObject];

但我也需要在 Windows 上这样做。我也应该在 Windows 上使用此命令吗?

注意 2: 我正在使用 INI 文件来存储我的应用程序设置,如下所示:

QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
QSettings *settings = new QSettings(path+"/Settings.ini", QSettings::IniFormat);

path 变量是 C:/Users/user/AppData/Local/MyApplication/ (Windows)。

我可以将数据库文件存储在同一路径中吗?

谢谢。

【问题讨论】:

  • 为什么不呢?这只是一个文件。
  • 我知道,但是这条路径 (C:/Users/user/AppData/Local/MyApplication/) 是否适合存储此类文件?
  • 这取决于你(我不知道你在用这个数据库做什么),但总的来说,是的。
  • 谢谢,@latedeveloper。我的数据库存储了用户收集的一些数据,它应该“永远不会”被删除。实际上,我需要将此数据库文件存储在用户不会意外删除的某个文件夹中,即使使用 CCleaner 或任何其他“清洁”应用程序也是如此。
  • 在我们的应用程序中,我们使用类似于注释 2.QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) / 数据库的东西

标签: c++ windows macos qt sqlite


【解决方案1】:

QStandardPaths::AppDataLocation 是否满足您对此的要求?

来自qt documentation

返回一个目录位置,持久性应用程序数据可以存放在该目录位置 存储。这是一个特定于应用程序的目录。获取路径 存储要与其他应用程序共享的数据,使用 QStandardPaths::GenericDataLocation。返回的路径永远不会为空。 在 Windows 操作系统上,这将返回漫游路径。这 在 Qt 5.4 中添加了枚举值。

【讨论】:

  • 感谢您的建议。这似乎是一个存储数据库文件的好地方/更好的地方,但我已经将它存储在 QStandardPaths::ConfigLocat‌​ion 中,并且我正在使用 Qt 5.3 并且这个枚举是在 Qt 中添加的5.4.
  • 那会很难用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 2010-12-03
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多