Compare commits

..

No commits in common. "0504491668f34cc527c5388b775370a0b5cfdf9f" and "d86bcbfcf28d78cf5025d8d4f3fe367b3e5b7b3d" have entirely different histories.

2 changed files with 51 additions and 0 deletions

View File

@ -16,5 +16,53 @@
************************************************************/
#include <stdio.h>
#include <time.h>
#include "sqlite3.h"
#include "planner.h"
extern struct llist;
// Initialize a new Database if there no one.
void init_db(sqlite3 *db) {
const char *sql_LinkedList =
"CREATE TABLE LinkedList ("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"data TEXT;)";
// Checks the SQL answer and if it's not ok prints the error code
char *errmsg = NULL;
if (sqlite3_exec(db, sql_LinkedList, NULL, NULL, &errmsg) != SQLITE_OK) {
fprintf(stderr, "Error in creation Table: %s\n", errmsg);
sqlite3_free(errmsg);
}
}
// Save a single node of the linkedlist in the database
// node needs to be replaced with the correct name and pointer
void save_node_to_db(sqlite3 *db, Node *node) {
char* errmsg = NULL;
sqlite3_stmt *stmt;
const char* sql = "INSERT INTO LinkedList (id, data) VALUES (?, ?);";
if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK) {
fprintf(stderr, "Failed to prepare statement: %s\n", sqlite3_errmsg(db));
} else {
sqlite3_bind_int(stmt, 1, node->id); // ? -> node->id
sqlite3_bind_text(stmt, 2, node->data, -1, SQLITE_STATIC); // ? -> node->data
if (sqlite3_step(stmt) != SQLITE_DONE) {
fprintf(stderr, "Execution failed: %s\n", sqlite3_errmsg(db));
} else {
printf("Node with ID %d saved.\n", node->id);
}
}
sqlite3_finalize(stmt);
}
// save a whole linkedlist in the database
// node needs to be replaced with the correct name and pointer
void save_linked_list_to_db(sqlite3* db, Node* head) {
Node* current = head;
while (current != NULL) {
save_node_to_db(db, current);
current = current->next;
}
}

View File

@ -5,3 +5,6 @@
#endif
extern void init_db(sqlite3 *db);
extern void save_node_to_db(sqlite3 *db, Node *node);
extern void save_linked_list_to_db(sqlite3* db, Node* head);