2013-06-14 26 views
6

Voglio creare database utilizzando la programmazione C.creazione del database tramite la programmazione c

Voglio creare il sistema di database dei dipendenti e voglio aggiornarlo in modo dinamico. per favore guidami come posso andare avanti

Devo farlo per sistema embedded che come memoria flash. il database deve essere archiviato su quel flash e devo essere in grado di aggiornarlo dinamicamente. Il documento e i suggerimenti sono preziosi.

+5

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

+0

Se si desidera creare un database MySQL utilizzando la programmazione C, è possibile utilizzare [Connettore MySQL C] (http://dev.mysql.com/doc/refman/5.5/en/c-api.html). –

+0

Non vedo cosa questo abbia a che fare con il kernel di Linux. – idoby

risposta

4

È possibile utilizzare structs e file operations per scrivere e leggere dal file. Tuttavia, le operazioni potrebbero non essere troppo veloci ed efficienti come nel caso dello MYSQL o di qualsiasi altro database.

codice

Esempio:

/* 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); 
} 

Per maggiori dettagli su come effettuare un database in c si può prendere la guida del seguente video

+0

mal provato e arriverà se ho dubbi – amar

+0

Come posso memorizzare le strutture C in file leggibili dall'uomo. Il codice sopra risulta in formato binario quindi voglio renderlo leggibile come posso farlo. – amar

+0

@amar potresti usare JSON per farlo. Quindi usa una funzione prendendo la struct come parametro per convertirla in una stringa JSON. Tuttavia questo è un po 'noioso in C ... – borchero

0

E 'possibile creare il database in C, ma è molto inefficiente e ad fare in modo efficiente è richiesto un sacco di sforzo, quindi sarebbe meglio se si utilizza mysql o postgres per la gestione del database.

1

Hai un sistema operativo? linux, qnx? Se lo fai, controlla se ci sono soluzioni native disponibili. Per esempio. mysql, postgresql, sqlite. Se c'è qualcosa lì - controlla i loro documenti.

Se siete su metallo nudo, continuate a leggere.

Penso che il modo migliore per iniziare sia usare una semplice tabella hash, in modo da avere tempi di interrogazione veloci.

L'hash di U-boot può essere un buon inizio.

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

Successivamente, è necessario memorizzare che in flash. Conserverei almeno due copie dei tuoi dati a scopo di protezione dall'interruzione dell'alimentazione durante la scrittura. Per riuscirci, avrai bisogno di un checksum da aggiungere alla tua struttura dati, ad es. crc32. Vedere questo:

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

Infine, se si dispone di una grande quantità di dati e (non tanto) Flash che ci si vuole comprimere i dati in qualche modo. Consiglio vivamente di utilizzare l'algoritmo di compressione del termorestringente. È semplice e funziona anche su atmel avrs

+0

Ecco il link al repository github di heatshrink: https://github.com/atomicobject/heatshrink – Andy

Problemi correlati