Sqlite作为fopen()的替代?

kle*_*lew 10 c c++ sqlite fopen

官方的sqlite3网页上写道,我应该考虑将sqlite作为fopen()函数的替代品.

你怎么看待这件事?使用sqlite补充应用程序内部数据存储总是很好的解决方案吗?这种解决方案的优点和缺点是什么?

你有一些经验吗?

编辑:你的经历怎么样?这个容易用吗?是痛苦还是快乐?你喜欢它吗?

小智 10

这取决于.有一些禁忌症:

  • 对于配置文件,使用纯文本或XML比使用关系数据库更容易调试或更改,即使是像SQLite一样轻量级的关系数据库.

  • 使用(例如)XML比使用关系表更容易描述树结构

  • SQLite API的记录非常糟糕 - 没有足够的示例,并且超链接很差.OTOH,如果你想挖掘它,信息就在那里.

  • 直接使用特定于应用程序的二进制格式将比在数据库中存储与BLOB相同的格式更快

  • 数据库损坏可能意味着所有数据的丢失而不是单个错误文件中的数据

OTOH,如果你的内部数据与关系模型很吻合,如果有很多,我会推荐SQLite - 我自己用它来做我的一个项目.

关于经验 - 我使用它,它运行良好,并且易于与现有代码集成.如果文档更容易导航我会给它5星 - 因为它是我给它四.

  • 记录不完整?我认为与其他FOSS项目相比它确实很好.他们列出了所有内容的前置条件和后置条件,我没有遇到任何麻烦理解API - 只有一个例外.(他们的一个后置条件有一个很好的小"todo"注意,他们需要确定它的作用) (5认同)