2010-04-19 10 views
5

¿Qué es una buena base de datos con soporte para C? Quiero una base de datos que pueda conservar los cambios cuando el programa se cierre y recuperarlos cuando el usuario inicie el programa. Estaba pensando que tal vez como SQLite o Berkeley DB. Algunos documentos también serían geniales. Solo necesito una base de datos con una biblioteca para C. Se usará localmente para almacenar información simple como una clave (de char *) que corresponda con un valor (de char *)Buena base de datos con la biblioteca C?

+1

¿Está buscando un db incorporado o un db remoto? –

+4

SQLite y Berkeley DB son ambas bibliotecas C nativas ... ¿Me falta algo? –

+0

Cuando dice "Quiero una base de datos que pueda persistir cuando el programa se cierra y la recupero cuando el usuario inicia el programa" ¿Esto significa datos de configuración? o la base de datos está leyendo en los datos manipulándola y luego escribiéndola sobre la marcha (operaciones CRUD)? –

Respuesta

8

Para datos incrustados, pruebe SQLite.

Aunque solo se trata de configuraciones de programa para una sola instancia del programa, un archivo XML podría ser su mejor opción. Hay muchos analizadores XML disponibles libremente para C.

3

PostgreSQL viene con libpq, que es Biblioteca C

+0

¿Desea utilizar una base de datos completa y apta para empresas para almacenar la configuración del programa? Eso es un poco exagerado, ¿no? –

+0

Sí, también me gusta el postgres, pero def. overkill para la configuración ... –

0

Dependiendo de lo que necesite almacenar y recuperar, así como de todos los otros criterios que se usarían para seleccionar una de estas opciones.

Puede leer y escribir desde y hacia un archivo.

Puede usar las bases de datos que menciona: ambas tienen una excelente documentación y son gratuitas.

Puede utilizar cualquier RDBMS de fuente abierta o comercial - Excelentes documentos también. (MySQL PostgreSQL, Firebird, etc ... para el código abierto) (Oracle, DB/2, Sybase, SQL Server, etc ...)

+0

La pregunta indica que el OP quiere almacenar la configuración del programa. –

+0

@Robert Harvey - Quiero una base de datos que pueda persistir cuando el programa se cierre y recuperarlos cuando el usuario inicie el programa me implica que quiere leer cierta información cuando el programa está comenzando y escribirla antes de que se cierre . También lo leí como datos persistentes mientras corría - Preguntaré –

0

Para tareas simples que usted puede utilizar: 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); 
} 
+1

Las respuestas basadas en enlaces generalmente son malas respuestas, extraigo información de este enlace y luego dejo el URI como referencia – Mysterion

Cuestiones relacionadas