我使用Apache,PHP和MySQL进行Web开发和本地应用程序。在过去的几年里,我慢慢学习C ++,并希望在今年夏天建立一个应用程序。具体来说,我想创建一个“库”应用程序,在其中我可以存储有关我拥有的书籍,CD和记录的信息。我知道这种类型的应用程序存在,但我想学习C ++,这似乎是一个很好的方法。
以下是几个问题:
是否可以创建一个不需要数据库来存储数据的独立应用程序?
如果上面#1的答案是“是”,那么为可能需要管理大量数据的应用程序执行此操作是否是个好主意?
- 醇>
您建议将哪些数据存储选项用于C ++应用程序?
谢谢!
更新的 嗯,这有很多好的答案。这是一个很棒的网站,有这么多的贡献者。事实证明,我现在可能不需要去C ++路线。我现在意识到我最感兴趣的是编写一个可以作为“库”组织系统 more 的应用程序而不是我想要追求C ++。感谢大家的回答!
答案 0 :(得分:6)
是否可以创建一个不需要数据库来存储数据的独立应用程序?
是的,您可以使用某种自定义文件格式来存储数据。
如果对上面#1的答案为“是”,那么为可能需要管理大量数据的应用程序执行此操作是否是个好主意?
这不是一个好主意,除非你真的想学习在结构化文件中存储数据。
您建议将哪些数据存储选项用于C ++应用程序?
我会看SQLite。它是一个数据库,但它不需要单独的引擎。
答案 1 :(得分:1)
如果您不想使用数据库,则可能需要将数据保存到文件(或多个文件)。如果是这样,问题可能是:哪种文件格式最好?答案取决于各种因素:
1)快速访问,体积小,易于解析?答案是“二进制数据”。只需使用fwrite将数据直接写入输出文件即可。有两个缺点:文件不是人类可读的,维护不同版本很麻烦。如果您阅读的数据并不完全符合您的预期,那么您很快就会遇到麻烦。
2)人类可读且易于维护?这就是XML的用途。现在可以使用像tinyXML这样的解析器,它们是将数据写入文件的绝佳工具。缺点是编写加载/保存例程需要更多时间(很多情况下很多)。
3)为您完成工作的图书馆。 MFC提供了CArchive类,但是还有其他可能更好的工具可以做到这一点。
答案 2 :(得分:1)
鉴于你(显然)主要是为了自我教育而不是真正使用它,可能在没有数据库管理器的情况下编写代码来处理存储是有意义的。自己编写所有代码(稍加注意)通常会导致稍高的速度,但需要花费相当多的额外工作并且通常会失去灵活性。从学习的角度来看,最大的问题是你所学到的相当多的东西只会在相当狭窄的情况下应用(例如,对于大多数典型的应用程序,你将想要使用数据库管理器,所以在没有很少收获的情况下学会做。)
有点还取决于您的预期用途/观众。如果您希望一次支持多个用户,那么事情几乎立即就会变得更加困难(至少这样做有效)。如果您只对一个能够一次访问数据库的用户感兴趣,那么事情就会变得更加简单。
答案 3 :(得分:1)
答案 4 :(得分:1)
嗯...
当然,你可以这样做。
您正在谈论的是回到RDBMS成功之前的时间段。这并不难,但你可能会学到一些经验教训:
应该这样做。
请注意,使用现代计算机硬件管理的数据量不太可能成为性能或空间问题,因此不必担心节省几个字节 - 这不值得麻烦。
祝你好运,享受骑行。
答案 5 :(得分:0)
我还建议SQLite。
从他们的网页:
“SQLite是一个软件库,它实现了一个独立的,无服务器,零配置的事务SQL数据库引擎.SQLite是世界上部署最广泛的SQL数据库引擎.SQLite的源代码在公共领域。“
“认为SQLite不是Oracle的替代品,而是替代fopen()”