1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <db.h>
#include <fcntl.h>
typedef struct {
char username[20];
char fullname[50];
int age;
} user_type;
int main(void)
{
DB *db = dbopen("database.db", O_RDWR | O_CREAT, 0644, DB_BTREE, NULL);
if ( db != NULL ) {
fprintf(stderr, "Datenbank eröffnet...\n");
#if INSERT
user_type users[] = {
{ "datengott", "Thomas Schmucker", 44 },
{ "user1", "Sabine Müller", 23 },
{ "sql-user", "SQL Database User", -1 }
};
for ( int i = 0; i != 3; ++i ) {
DBT data = { .data = &users[i], .size = sizeof(users[i]) };
DBT key = { .data = &users[i].username, .size = sizeof(users[i].username) };
int res = db->put(db, &key, &data, 0);
if ( res == -1 ) {
fprintf(stderr, "failed to insert data!\n");
}
}
#endif
#if LOOKUP
{
DBT key = { .data = &users[0].username, .size = sizeof(users[0].username) };
DBT data;
int res = db->get(db, &key, &data, 0);
if ( res == 0 ) {
user_type *user = data.data;
printf("Fullname: %s, Age: %d\n", user->fullname, user->age);
}
}
#endif
{
DBT key, data;
int err = db->seq(db, &key, &data, R_FIRST);
while ( !err ) {
user_type *user = data.data;
printf("Fullname: %s, Age: %d\n", user->fullname, user->age);
err = db->seq(db, &key, &data, R_NEXT);
}
}
db->close(db);
}
return EXIT_SUCCESS;
}
|