在C中模仿数据库

时间:2010-04-07 23:40:36

标签: c database sqlite struct

我对C相当新。(我对C#[Visual Studio]和Java [Eclipse]有很好的了解)我想创建一个存储信息的程序。我的第一直觉是使用像SQL Server这样的数据库。但我不认为它与C兼容。所以现在我有两个选择:

  • 创建一个包含数据类型的结构(也就是typedef)。
  • 找到一种通过C头文件集成SQLite的方法

您认为哪种选择最好?或者你还有其他选择吗?我倾向于使用typedef制作一个结构,但可以追求改变我的想法。

4 个答案:

答案 0 :(得分:6)

ODBC is a C library并允许以非常容易让人联想到JDBC的模式访问数据库。 Microsoft有一个用于SQLServer的ODBC驱动程序,它包含在Windows中,或者对于非Windows,您可以利用FreeTDS之类的内容。

此外,SQLite提供了一种更直接的C访问数据库的机制,允许嵌入等。

而且,根据您的存储需求,BDB可能值得调查。

答案 1 :(得分:1)

真正的问题是你需要什么。如果您定义自己的数据结构,则必须管理您正在执行的操作的所有方面 - 如果您需要可变数量的记录,则需要使用malloc / free / realloc管理该空间。如果要将数据存储在磁盘上,则需要编写代码来读写结构。如果要索引数据,则需要编写代码来索引它等等。

作为交换,您可以真正快速访问,特别是如果您的需求非常简单(例如,小的,固定数量的相同记录,以便您可以轻松使用结构数组)。 / p>

使用数据库或多或少地反转那些 - 您可以更灵活地处理可变类型的数据,比内存中更多的数据,ACID事务,动态构建索引等。换句话说,你可能最终会得到更多的代码来执行你可能不需要的事情,并且执行速度变慢 - 特别是如果你存储的数据足够少,它们都可以适合内存。

答案 2 :(得分:0)

您可以将MySQL与C example here一起使用 http://www.ucl.ac.uk/is/mysql/c/

答案 3 :(得分:0)

可以使用Connector/C库从C访问MySQL。

MS SQL Server似乎只与ODBC兼容,并且不提供自己的C库。 MS长期以来一直在巧妙地劝阻C开发,所以这并不奇怪。

AFAIK,Oracle,PostGreSQL都有自己的C库。所有这些也可以通过ODBC(包括MySQL)访问

SQLite主要是一个编写为C库的嵌入式数据库。这仅支持非标准版本的SQL,因此它可能不是您想要的,但非常适合存储少量数据。可以找到C API文档here