我正在开发一个完全用 C 编写的应用程序。我必须永久保存数据。我尝试了文件存储,但我觉得它真的是一种原始的方式来完成这项工作,我不想将我的敏感数据保存在一个简单的文本文件中。如何以简单的方式保存我的数据并将其恢复?我来自JavaScript背景,更喜欢像jsons这样的东西。我也会喜欢postgreSQL之类的东西。给我一些建议。我正在使用gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
。
答案 0 :(得分:4)
sqlite似乎符合您的要求。
SQLite是一个嵌入式SQL数据库引擎。与大多数其他SQL不同 数据库,SQLite没有单独的服务器进程。 SQLite的 直接读写普通磁盘文件。一个完整的SQL 具有多个表,索引,触发器和视图的数据库是 包含在单个磁盘文件中。数据库文件格式是 跨平台 - 您可以在32位和32位之间自由复制数据库 64位系统或big-endian和little-endian架构之间。 这些功能使SQLite成为应用程序文件的流行选择 格式。认为SQLite不是Oracle的替代品,而是作为Oracle的替代品 替换fopen()
答案 1 :(得分:2)
http://www.postgresql.org/docs/8.1/static/libpq.html
libpq是C应用程序程序员与PostgreSQL的接口。 libpq是一组库函数,允许客户端程序将查询传递给PostgreSQL后端服务器并接收这些查询的结果。
答案 2 :(得分:1)
我会推荐SQLite。我认为这是存储本地数据的好方法。
有C库绑定,其API非常简单。
它的主要优点是你需要的只是图书馆。您不需要复杂的数据库服务器设置(就像使用PostgreSQL一样)。此外,它的占地面积非常小(它也在移动开发世界{iOS,android,其他}中使用了很多)。
它的缺点是它不能很好地处理并发性。但如果它是一个本地的,简单的单线程应用程序,那么我想这不会是一个问题。
MySQL embedded或BerkeleyDB是您可能想要查看的其他选项。
答案 3 :(得分:1)
SQLite是一个轻量级数据库。本页介绍C语言界面:
SQLite是一个软件库,它实现了一个独立的,无服务器,零配置的事务SQL数据库引擎。 SQLite是世界上部署最广泛的SQL数据库引擎。 SQLite的源代码位于公共领域。
答案 4 :(得分:1)
SQLite是一个受欢迎的选择,因为它重量轻,速度快。它还提供C/C++ interface(包括一堆其他语言)。
答案 5 :(得分:0)
其他人已经提到了SQLite,所以我将使用dbm:
http://linux.die.net/man/3/dbm_open
它不像SQLite那么华丽(例如,它不是一个完整的SQL数据库),但它通常更容易使用C,因为它需要更少的设置。