2013-06-14 31 views
6

Chcę utworzyć bazę danych przy użyciu programowania w języku C.tworzenie bazy danych za pomocą programowania w języku C

Chcę utworzyć system bazy danych pracowników i chcę go dynamicznie aktualizować. proszę, poprowadź mnie, jak mam iść dalej.

Muszę to zrobić dla systemu wbudowanego, który jako pamięć flash. baza danych musi być przechowywana w tym flashu i muszę być w stanie aktualizować ją dynamicznie. Dokument i sugestie są cenne.

+5

try [Sqlite] (http://www.sqlite.org/) –

+0

Jeśli chcesz utworzyć bazę danych MySQL za pomocą programowania C, możesz skorzystać z [MySQL C Connector] (http://dev.mysql.com/doc/refman/5.5/en/c-api.html). –

+0

Nie widzę, co to ma wspólnego z jądrem Linuksa. – idoby

Odpowiedz

4

Możesz użyć structs i file operations, aby napisać i odczytać z pliku. Jednak operacje mogą nie być zbyt szybkie i wydajne, jak w przypadku MYSQL lub jakiejkolwiek innej bazy danych.

Przykładowy kod:

/* employee database program  */ 

#include <stdio.h> 
#include <string.h> 

typedef struct vehicle 
{ 
    char name[100]; 
    int roll; 
    int salary; 
    char address[100]; 
    int join_year; 
}record; 

int main(void) 
{ 
    int i , choice; 
    FILE *fp1,*fp2; 
    char oname[100]; 
    record det; 
    int recsize; 
    char c; 

    fp1 = fopen("record.dat" , "r+"); 
    if(fp1 == NULL) 
    { 
     fp1 = fopen("record.dat" , "w+"); 
     if(fp1 == NULL) 
     { 
      printf("error in opening file : \n"); 
      return -1; 
     } 
    } 
    recsize = sizeof(det); 

    fseek(fp1 , 0 ,SEEK_END); 
    printf("Enter employee Name : "); 
    scanf("%[^\n]" , det.name); 
    printf("Enter roll number : "); 
    scanf("%d" , &det.roll); 
    printf("Enter the salary : "); 
    scanf("%d" , &det.salary); 
    scanf("%c" , &c); 
    printf("Enter address : "); 
    scanf("%[^\n]" , det.address); 
    printf("Enter joining year : "); 
    scanf("%d" , &det.join_year); 
    fwrite(&det,recsize,1,fp1); 
} 

Aby uzyskać więcej informacji na temat tworzenia bazy danych w C można przyjąć wytyczne z poniższego video

+0

źle wypróbować tego i pojawi się, jeśli masz wątpliwości. – amar

+0

Jak mogę przechowywać struktury C w czytelnych dla człowieka plikach. Powyższy kod ma format binarny, więc chcę uczynić go czytelnym dla człowieka, jak mogę to zrobić. – amar

+0

@amar możesz użyć JSON, aby to zrobić. Następnie użyj funkcji przyjmującej struct jako parametr do przekonwertowania go na ciąg JSON. Jednak jest to dość nudne w C ... – borchero

0

Jest możliwe, aby stworzyć bazę danych w C, ale jest bardzo nieefektywne i wykonaj to wydajnie, wymaga to wiele wysiłku, więc byłoby lepiej, gdybyś używał mysql lub postgres do obsługi bazy danych.

1

Czy masz system operacyjny? linux, qnx? Jeśli tak, sprawdź, czy dostępne są jakieś natywne rozwiązania. Na przykład. mysql, postgresql, sqlite. Jeśli coś tam jest - sprawdź ich dokumenty.

Jeśli jesteś na gołym metalu, czytaj dalej.

Myślę, że najlepszym sposobem na rozpoczęcie jest użycie prostego stołu mieszającego, dzięki czemu będziesz mieć szybkie czasy zapytań.

Zestaw masztów U-boot może służyć jako dobry początek.

https://github.com/lentinj/u-boot/blob/master/lib/hashtable.c

Następnie trzeba zapisać, że lampa błyskowa. Trzymam co najmniej dwie kopie twoich danych ze względu na ochronę przed utratą zasilania podczas zapisu. Aby to osiągnąć, potrzebujesz trochę kontroli, aby dodać do struktury danych, np. crc32. Zobacz to:

http://www.barrgroup.com/Embedded-Systems/How-To/CRC-Calculation-C-Code

Wreszcie, jeśli masz dużo danych i (nie tak dużo) migają tylko chcesz skompresować dane jakoś. Naprawdę zalecam użycie algorytmu kompresji termokurczliwej. To proste i działa nawet na atmel avrs

+0

Oto link do repozytorium github heatshrink: https://github.com/atomicobject/heatshrink – Andy

Powiązane problemy