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.
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.
/* 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
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
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.