有C库的好数据库?

时间:2010-04-19 00:34:55

标签: c database

什么是支持C的好数据库?我想要一个数据库,它可以在程序关闭时保持更改,并在用户启动程序时检索它们。我想的可能就像SQLite或Berkeley DB。一些文档也会很棒。我只需要一个带有C库的数据库。它将在本地用于存储简单信息,如键(char *)对应一个值(char *)

4 个答案:

答案 0 :(得分:8)

对于嵌入式数据,请尝试使用SQLite。

虽然它只是程序的单个实例的程序设置,但XML文件可能是您最好的选择。 C语言有许多免费提供的XML解析器。

答案 1 :(得分:3)

PostgreSQL附带了libpq,这是一个C库。

答案 2 :(得分:0)

根据您需要存储和检索的内容以及用于选择其中一个选项的所有其他条件。

您可以对文件进行读写操作。

您可以使用您提到的数据库 - 它们都具有出色的文档并且是免费的。

您可以使用任何开源或商业RDBMS - 优秀的文档。 (MySql PostgresSQL,Firebird等...用于开源)(Oracle,DB / 2,Sybase,SQLServer等...)

答案 3 :(得分:0)

对于简单的任务,您可以使用:www.simpledatabase.org

#include "DB.h"

// Define client structure (register)

typedef struct
{
    unsigned int id;
    char name[60];
    short int age;
} clientSt;

int main() 
{
    // Allocate a client structure 
    clientSt client;

    // Create client database
    db_Create("ClientList.db", sizeof(clientSt));

    // Open client database
    db_Open("ClientList.db", "ClientList");

    // Add client register 1
    client.id = 1;
    strncpy(client.name, "Bob", sizeof(client.name));
    client.age = 38;
    db_CreateRegister((const void*)&client);

    // Add client register 2
    client.id = 2;
    strncpy(client.name, "Alice", sizeof(client.name));
    client.age = 20;
    db_CreateRegister((const void*)&client);

    // Add client register 3
    client.id = 3;
    strncpy(client.name, "John", sizeof(client.name));
    client.age = 25;
    db_CreateRegister((const void*)&client);

    // Print all registers
    db_GoToBegin();
    do
    {
        db_GetRegister(&client);
        printf("ID: %d Name = %s Age = %d\n", client.id, client.name, client.age);
    }while(db_GoToNext() != DB_FALSE);

    // Close database
    db_Close("ClientList");

    // Checks if any error occurred
    if(db_GetError())
    {
        printf("Error: %s\n", db_GetErrorMessage());
    }

    return(0);
}