在C ++中存储数据的最佳方式

时间:2009-05-14 15:10:30

标签: c++ qt4

我刚刚学习C ++,刚刚开始讨论QT,我坐在这里想知道大多数应用程序如何保存数据?有行业标准吗?他们将它存储在XML文件,文本文件,SQLite中吗?会计软件需要保存的敏感数据呢?我只是想了解这方面的最佳实践。

由于

7 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

首先,您需要澄清要保存的数据类型。

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

如果它不仅仅是某些应用程序设置,请转到XML个文件或SQL

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:1)

当你说“最好的方式”时,你必须用“好”来定义你的意思。

问题在于各种要求相互冲突,因此无法同时满足所有这些要求。

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

如果要求是“可移植数据格式”,则表示XML,但这与“紧凑”和“索引”冲突。

答案 6 :(得分:0)

  

他们将它存储在XML文件,文本文件,SQLite中吗?

是。
另外,二进制文件和关系数据库 还有什么吗?