3

我刚学 C++,刚开始玩 QT,我坐在这里想知道大多数应用程序是如何保存数据的?有行业标准吗?他们是否将其存储在 XML 文件、文本文件、SQLite 中?那些说会计软件需要保存的敏感数据呢?我只是有兴趣了解最佳实践是什么。

谢谢

4

7 回答 7

7

这个问题太笼统了。唯一的答案是它取决于特定应用程序和数据的性质,而它是否用 C++ 编写与它几乎没有关系。

例如,用户可配置的应用程序设置通常存储在文本文件中,但在 Windows 上,它们通常存储在注册表中。会计应用程序通常将其数据保存在某种数据库中。

于 2009-05-14T15:15:00.447 回答
4

存储应用程序数据有很多好方法(称为序列化)。

就个人而言,我认为对于更大的数据集,使用开放格式更容易调试。例如,如果您使用 XML,您可以将数据存储在一个开放的表单中,这样如果您遇到文件损坏问题(即客户端由于某种原因无法打开您的文件),就更容易找到它。如果那里有敏感数据,您始终可以在使用密钥加密将其写入文件之前对其进行加密。例如,微软已经从使用专有格式转为在其办公文档中打开 xml。他们使用 .*x 扩展名(.docx、.xlsx 等)。它实际上只是一个带有 xml 文件的压缩文件夹。

使用二进制序列化当然是目前大多数独立应用程序的行业标准。这很可能是因为他们使用的应用程序框架(例如旧的 MFC)。如果您查看现代应用程序框架中的大多数序列化技术,就会发现 XML 序列化得到了很好的支持。

于 2009-05-14T15:15:54.627 回答
2

首先,您需要明确您想要保存什么样的数据。

如果您只想保存一些应用程序设置,请使用QSettings将您的设置保存到 INI 文件或注册表。

如果它不仅仅是一些应用程序设置,请使用XML文件或SQL

于 2009-05-14T15:19:04.727 回答
1

这是一个普遍的问题。像许多事情一样,正确的答案取决于您的应用程序及其需求。

  • 大多数桌面应用程序将最终用户数据保存到文件中(想想 Word 和 Excel)。格式取决于您,XML、二进制等。如果您可以序列化/反序列化对象以归档它可能会让您的生活更轻松。
  • 内部应用程序数据(例如配置文件或临时数据)可能会保存到 XML 文件或轻量级本地数据库(例如 SQLite)
  • 通常,企业内部使用的“企业”应用程序会将其数据保存到后端数据库,例如 SQL Server 或 Oracle。这样一来,企业的所有数据都保存在一个中央位置。然后它可用于报告等。

对于会计软件,您需要考虑业务领域和最终用户。例如,如果该软件要出售给大型企业,您可能会使用某种形式的数据库来保存数据。否则二进制文件会很好,如果你真的很偏执,可能会使用某种形式的加密。

于 2009-05-14T15:23:02.097 回答
1

当您说“最好的方式”时,您必须定义“好”的含义。

问题是各种要求相互冲突,因此您不能同时满足所有要求。

例如,如果一个要求是“对数据的并发多用户访问”,那么这建议使用数据库引擎,但这与“尽可能小”和“对第 3 方软件的依赖最小化”相冲突。

如果要求是“可移植数据格式”,那么这建议使用 XML,但这与“紧凑”和“索引”相冲突。

于 2009-05-14T15:23:13.360 回答
1

没有标准做法,但是如果您想使用复杂的结构化数据,请考虑使用嵌入式数据库引擎,例如 SQLite 或 Metakit,或 Berkeley DB 文件。XML 文件也可以完成这项工作并且是人类可读/可写的。首选项可以使用 INI 文件或 Windows 注册表等。简而言之,这实际上取决于您的使用模式。

于 2009-05-14T15:16:08.010 回答
-1

他们是否将其存储在 XML 文件、文本文件、SQLite 中?

是的。
此外,二进制文件和关系数据库。
还要别的吗?

于 2009-05-14T15:14:19.450 回答