#include #include #include #include #include #define USERNAME_LENGTH 20 #define FULLNAME_LENGTH 50 typedef struct { char username[USERNAME_LENGTH]; char fullname[FULLNAME_LENGTH]; int age; } user_type; int main(void) { DB *db = dbopen("./database.db", O_RDWR | O_CREAT, 0644, DB_BTREE, NULL); // NOLINT if ( db != NULL ) { (void) 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; DBT 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; }