view db.c @ 20:17b2bcc42d72 default tip

added check for empty result; minor stuff
author meillo@marmaro.de
date Sun, 27 Jul 2008 21:34:54 +0200
parents 5937504619f2
children
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include "db.h"



void db_error(char* info) {
	fprintf(stderr, "%s%sSQL error: %s\n", (info) ? info : "", (info) ? ": " : "", sqlite3_errmsg(db));
}


void db_connect() {
	if (sqlite3_open(database, &db) != SQLITE_OK) {
		fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
		sqlite3_close(db);
		exit(1);
	}
}


void db_close() {
	sqlite3_close(db);
}


sqlite3_stmt* db_query(char* query) {
	int error;
	sqlite3_stmt* stmt;

	error = sqlite3_prepare(db, query, -1, &stmt, NULL);
	if (error) {
		fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
	}
	return stmt;
}



int db_update(char* query) {
	int error;
	sqlite3_stmt* stmt;

	error = sqlite3_prepare(db, query, -1, &stmt, NULL);
	if (error || sqlite3_step(stmt) != SQLITE_DONE) {
		fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
		return 0;
	}
	return 1;
}


int db_rows(sqlite3_stmt* stmt) {
	int i = 0;

	sqlite3_reset(stmt);
	while (sqlite3_step(stmt) == SQLITE_ROW) {
		i++;
	}
	sqlite3_reset(stmt);
	return i;
}


int read_time() {
	int error;

	sprintf(query, "select time from game;");
	stmt = db_query(query);
	error = sqlite3_step(stmt);
	if (error == SQLITE_DONE) {
		fprintf(stderr, "no game available\n");
		exit(1);
	}
	if (error != SQLITE_ROW) {
		db_error("read_time");
		exit(1);
	}
	gametime = sqlite3_column_int(stmt, 0);
	sqlite3_finalize(stmt);
	return gametime;
}