2010-04-19 40 views
5

Cơ sở dữ liệu tốt với hỗ trợ cho C là gì? Tôi muốn một cơ sở dữ liệu có thể tiếp tục thay đổi khi chương trình đóng và truy xuất chúng khi người dùng khởi động chương trình. Tôi đã suy nghĩ có thể giống như SQLite hay Berkeley DB. Một số tài liệu cũng sẽ tuyệt vời. Tôi chỉ cần một cơ sở dữ liệu với thư viện cho C. Nó sẽ được sử dụng cục bộ để lưu trữ thông tin đơn giản như một khóa (của char *) tương ứng với một giá trị (của char *)Cơ sở dữ liệu tốt với thư viện C?

+1

Bạn đang tìm kiếm một db nhúng hoặc một db từ xa? –

+4

SQLite và Berkeley DB đều là các thư viện C nguyên gốc .... tôi có thiếu gì đó không? –

+0

Khi bạn nói "Tôi muốn một cơ sở dữ liệu có thể tiếp tục thay đổi khi chương trình đóng và truy xuất chúng khi người dùng khởi động chương trình" Liệu điều này có nghĩa là dữ liệu cấu hình không? hoặc là cơ sở dữ liệu đọc trong dữ liệu thao tác nó và sau đó viết nó như nó đi (CRUD hoạt động)? –

Trả lời

8

Đối với dữ liệu được nhúng, hãy thử SQLite.

Mặc dù nếu đó chỉ là cài đặt chương trình cho một phiên bản chương trình duy nhất, tệp XML có thể là đặt cược tốt nhất của bạn. Có rất nhiều trình phân tích cú pháp XML tự do có sẵn cho C.

3

PostgreSQL đi kèm với libpq, Thư viện C.

+0

Bạn muốn sử dụng cơ sở dữ liệu đầy đủ, có khả năng doanh nghiệp để lưu cài đặt chương trình? Đó là một chút quá mức cần thiết phải không? –

+0

Vâng, tôi cũng thích bưu điện, nhưng def. overkill cho các thiết lập ... –

0

Tùy thuộc vào những gì bạn cần lưu trữ và truy xuất cũng như tất cả các tiêu chí khác mà người dùng sẽ sử dụng để chọn một trong các tùy chọn này.

Bạn có thể đọc và ghi vào và từ một tệp.

Bạn có thể sử dụng cơ sở dữ liệu bạn đề cập - Cả hai đều có tài liệu tuyệt vời và miễn phí.

Bạn có thể sử dụng bất kỳ RDBMS nguồn mở hoặc thương mại nào - Tài liệu tuyệt vời cũng có. (MySql Postgressql, Firebird, vv ... cho mã nguồn mở) (Oracle, DB/2, Sybase, SQLServer, vv ...)

+0

Câu hỏi nói rằng OP muốn lưu trữ các thiết lập chương trình. –

+0

@Robert Harvey - Tôi muốn một cơ sở dữ liệu có thể tiếp tục thay đổi khi chương trình đóng và truy xuất chúng khi người dùng bắt đầu chương trình ngụ ý rằng tôi muốn đọc một số thông tin khi chương trình bắt đầu và viết nó trước khi nó đóng . Tôi cũng đọc nó như là dữ liệu kiên trì trong khi chạy - Tôi sẽ hỏi –

0

Đối với nhiệm vụ đơn giản, bạn có thể sử dụng: 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

câu trả lời dựa trên liên kết thường là câu trả lời không tốt, trích xuất một số thông tin từ liên kết này và sau đó rời khỏi URI để tham khảo – Mysterion

Các vấn đề liên quan