All pastes #934393 Raw Edit

YSI_db.own 0.0.1

public cpp v1 · immutable
·published 2008-03-08 20:30 UTC
rendered paste body
static stock	YSI_g_sDBCurrentTag[MAX_INI_TAG];stock DB_Open(name[]){	new		DB:dbHnd = db_open(name);	if (dbHnd)	{		db_query(dbHnd, "BEGIN;");	}	return dbHnd;}stock DB_Close(DB:dbHnd){	if (dbHnd)	{		db_query(dbHnd, "END;");		db_close(dbHnd);		return 1;	}	return 0;}#define DB_SetTag DB_SetTablestock DB_SetTable(DB:dbHnd, table[]){	if (dbHnd)	{		new			query[64];		format(query, sizeof (query), "CREATE TABLE IF NOT EXISTS %s(key integer NOT NULL PRIMARY KEY AUTOINCREMENT);", table);		strcpy(YSI_g_sDBCurrentTag, table, sizeof (YSI_g_sDBCurrentTag));		db_query(dbHnd, query);		return 1;	}	return 0;}stock DB_SetRow(DB:dbHnd, row = -1){	if (dbHnd)	{		new			query[64];		if (row == -1)		{			format(query, sizeof (query), "INSERT INTO %s (_ROWID_) VALUES (last_insert_rowid() + 1)", YSI_g_sDBCurrentTag);			db_query(dbHnd, query);		}		format(query, sizeof (query), "CREATE TABLE IF NOT EXISTS %s(key integer NOT NULL PRIMARY KEY AUTOINCREMENT);", table);		strcpy(YSI_g_sDBCurrentTag, table, sizeof (YSI_g_sDBCurrentTag));		return row;	}	return -1;}stock DB_WriteString(DB:dbHnd, name[], data[]){	if (dbHnd)	{		DB_AddColumn(dbHnd, name, "varchar(" #MAX_INI_ENTRY_TEXT ")");		return 1;	}	return 0;}stock DB_WriteInt(DB:dbHnd, name[], data){	if (dbHnd)	{		DB_AddColumn(dbHnd, name, "integer");		return 1;	}	return 0;}stock DB_WriteFloat(DB:dbHnd, name[], Float:data){	if (dbHnd)	{		DB_AddColumn(dbHnd, name, "real");		return 1;	}	return 0;}static stock DB_AddColumn(DB:dbHnd, name[], type[]){	new		query[256];	format(query, sizeof (query), "SELECT sql FROM sqlite_master WHERE tbl_name = '%s';", YSI_g_sDBCurrentTag);	new		DBResult:dbResult = db_query(dbHnd, query);	if (dbResult)	{		db_get_field(dbResult, 0, query, sizeof (query));		db_free_result(dbResult);		if (wordfind(name, query, chrfind('(', query)) != -1)		{			return 1;		}	}	format(query, sizeof (query), "ALTER TABLE %s ADD COLUMN %s %s; VACUUM;", YSI_g_sDBCurrentTag, name, type);	db_query(dbHnd, query);	return 0;}