web-dev-qa-db-fra.com

création de base de données en utilisant la programmation c

Je veux créer une base de données en utilisant la programmation en C.

Je souhaite créer le système de base de données des employés et le mettre à jour de manière dynamique. s'il vous plaît guidez-moi comment puis-je aller de l'avant.

Je dois le faire pour le système embarqué qui comme mémoire flash. la base de données doit être stockée sur cette mémoire flash et je dois pouvoir la mettre à jour de manière dynamique. Le document et les suggestions sont précieux.

7
amar

Vous pouvez utiliser structs et file operations pour écrire et lire dans le fichier. Toutefois, les opérations peuvent ne pas être trop rapides et efficaces comme dans le cas de MYSQL ou de toute autre base de données. 

Exemple de code:

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

Pour plus de détails sur la création d’une base de données en c, vous pouvez consulter les directives suivantes: video

6
tusharmakkar08

Avez-vous un OS là-bas? linux, qnx? Si vous le faites, vérifiez s'il existe des solutions natives disponibles. Par exemple. mysql, postgresql, sqlite. S'il y a quelque chose - vérifiez leurs docs. 

Si vous êtes sur du métal nu, lisez la suite. 

Je pense que la meilleure façon de commencer consiste à utiliser une simple table de hachage, afin que les temps d'interrogation soient rapides. 

La hashtable de U-boot peut vous servir de bon départ. 

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

Ensuite, vous devrez stocker cela en flash. Je conserverais au moins deux copies de vos données par souci de protection contre les pannes de courant pendant l'écriture. Pour ce faire, vous aurez besoin de quelques vérifications à ajouter à votre structure de données, par exemple. crc32. Regarde ça: 

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

Enfin, si vous avez beaucoup de données et (pas tellement) en mémoire flash, vous voudrez peut-être les compresser d’une manière ou d’une autre. Je recommande vraiment d'utiliser l'algorithme de compression heatshrink. C'est simple et fonctionne même sur atmels avrs

1
Andy

Il est possible de créer une base de données en c mais cela est très inefficace et pour le faire efficacement, il faut déployer beaucoup d'efforts. Il serait donc préférable d'utiliser mysql ou postgres pour gérer la base de données.

0
Vasu Dev Garg