C中的数据库访问

时间:2011-08-16 19:50:13

标签: c database

我正在开发一个完全用 C 编写的应用程序。我必须永久保存数据。我尝试了文件存储,但我觉得它真的是一种原始的方式来完成这项工作,我不想将我的敏感数据保存在一个简单的文本文件中。如何以简单的方式保存我的数据并将其恢复?我来自JavaScript背景,更喜欢像jsons这样的东西。我也会喜欢postgreSQL之类的东西。给我一些建议。我正在使用gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3

6 个答案:

答案 0 :(得分:4)

sqlite似乎符合您的要求。

  

SQLite是一个嵌入式SQL数据库引擎。与大多数其他SQL不同   数据库,SQLite没有单独的服务器进程。 SQLite的   直接读写普通磁盘文件。一个完整的SQL   具有多个表,索引,触发器和视图的数据库是   包含在单个磁盘文件中。数据库文件格式是   跨平台 - 您可以在32位和32位之间自由复制数据库   64位系统或big-endian和little-endian架构之间。   这些功能使SQLite成为应用程序文件的流行选择   格式。认为SQLite不是Oracle的替代品,而是作为Oracle的替代品   替换fopen()

查看quickstart

答案 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 embeddedBerkeleyDB是您可能想要查看的其他选项。

答案 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,因为它需要更少的设置。