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

问题描述 投票:1回答:7

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

谢谢

c++ qt4
7个回答
6
投票

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

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


3
投票

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

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

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


2
投票

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

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

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


1
投票

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


1
投票

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

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

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


1
投票

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

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

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

如果需求是“可移植数据格式”,那么这表明XML,但与“紧凑”和“索引”冲突。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.