Хорошая база данных с библиотекой C? - PullRequest
5 голосов
/ 19 апреля 2010

Что такое хорошая база данных с поддержкой C? Мне нужна база данных, которая может сохранять изменения, когда программа закрывается, и извлекать их, когда пользователь запускает программу. Я думал, может быть, как SQLite или Беркли DB. Некоторая документация тоже была бы отличной. Мне просто нужна база данных с библиотекой для C. Она будет использоваться локально для хранения простой информации, такой как ключ (char *), который соответствует значению (char *)

Ответы [ 4 ]

8 голосов
/ 19 апреля 2010

Для встроенных данных попробуйте SQLite.

Хотя, если это просто настройки программы для одного экземпляра программы, XML-файл может быть вашим лучшим выбором. Существует множество свободно доступных анализаторов XML для C.

3 голосов
/ 19 апреля 2010

PostgreSQL поставляется с libpq, который является библиотекой C.

0 голосов
/ 01 февраля 2015

Для простых задач вы можете использовать: 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);
}
0 голосов
/ 19 апреля 2010

В зависимости от того, что вам нужно хранить и извлекать, а также от всех других критериев, которые можно использовать для выбора одного из этих параметров.

Вы можете читать и писать в файл и из него.

Вы можете использовать упомянутые вами базы данных - они обе имеют отличную документацию и бесплатны.

Вы можете использовать любую открытую или коммерческую СУБД - также отличные документы. (MySql PostgresSQL, Firebird и т. Д. Для открытого исходного кода) (Oracle, DB / 2, Sybase, SQLServer и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...