garten

annotate db.c @ 20:17b2bcc42d72

added check for empty result; minor stuff
author meillo@marmaro.de
date Sun, 27 Jul 2008 21:34:54 +0200
parents 5937504619f2
children
rev   line source
meillo@15 1 #include <stdio.h>
meillo@15 2 #include <stdlib.h>
meillo@15 3 #include "db.h"
meillo@15 4
meillo@15 5
meillo@15 6
meillo@20 7 void db_error(char* info) {
meillo@20 8 fprintf(stderr, "%s%sSQL error: %s\n", (info) ? info : "", (info) ? ": " : "", sqlite3_errmsg(db));
meillo@20 9 }
meillo@20 10
meillo@20 11
meillo@15 12 void db_connect() {
meillo@15 13 if (sqlite3_open(database, &db) != SQLITE_OK) {
meillo@15 14 fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
meillo@15 15 sqlite3_close(db);
meillo@15 16 exit(1);
meillo@15 17 }
meillo@15 18 }
meillo@15 19
meillo@15 20
meillo@15 21 void db_close() {
meillo@15 22 sqlite3_close(db);
meillo@15 23 }
meillo@15 24
meillo@15 25
meillo@15 26 sqlite3_stmt* db_query(char* query) {
meillo@15 27 int error;
meillo@15 28 sqlite3_stmt* stmt;
meillo@15 29
meillo@15 30 error = sqlite3_prepare(db, query, -1, &stmt, NULL);
meillo@15 31 if (error) {
meillo@15 32 fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
meillo@15 33 }
meillo@15 34 return stmt;
meillo@15 35 }
meillo@15 36
meillo@15 37
meillo@15 38
meillo@15 39 int db_update(char* query) {
meillo@15 40 int error;
meillo@15 41 sqlite3_stmt* stmt;
meillo@15 42
meillo@15 43 error = sqlite3_prepare(db, query, -1, &stmt, NULL);
meillo@15 44 if (error || sqlite3_step(stmt) != SQLITE_DONE) {
meillo@15 45 fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
meillo@15 46 return 0;
meillo@15 47 }
meillo@15 48 return 1;
meillo@15 49 }
meillo@15 50
meillo@15 51
meillo@17 52 int db_rows(sqlite3_stmt* stmt) {
meillo@17 53 int i = 0;
meillo@17 54
meillo@17 55 sqlite3_reset(stmt);
meillo@17 56 while (sqlite3_step(stmt) == SQLITE_ROW) {
meillo@17 57 i++;
meillo@17 58 }
meillo@17 59 sqlite3_reset(stmt);
meillo@17 60 return i;
meillo@17 61 }
meillo@17 62
meillo@17 63
meillo@15 64 int read_time() {
meillo@20 65 int error;
meillo@20 66
meillo@15 67 sprintf(query, "select time from game;");
meillo@16 68 stmt = db_query(query);
meillo@20 69 error = sqlite3_step(stmt);
meillo@20 70 if (error == SQLITE_DONE) {
meillo@20 71 fprintf(stderr, "no game available\n");
meillo@20 72 exit(1);
meillo@20 73 }
meillo@20 74 if (error != SQLITE_ROW) {
meillo@20 75 db_error("read_time");
meillo@15 76 exit(1);
meillo@15 77 }
meillo@15 78 gametime = sqlite3_column_int(stmt, 0);
meillo@15 79 sqlite3_finalize(stmt);
meillo@15 80 return gametime;
meillo@15 81 }