Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef KSM_DATABASE_H
00030 #define KSM_DATABASE_H
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036
00037
00038
00039
00040
00041
00042
00043 #include <stdlib.h>
00044
00045 #define KSM_DB_VERSION 2
00046
00047 #define MYSQL_DB 1
00048 #define SQLITE_DB 2
00049
00050 #ifdef USE_MYSQL
00051
00052 #include <mysql.h>
00053
00054 typedef MYSQL* DB_HANDLE;
00055 typedef unsigned long DB_ID;
00056
00057 struct db_result {
00058 unsigned int magic;
00059 int count;
00060 DB_HANDLE handle;
00061 MYSQL_RES* data;
00062 };
00063 #define DB_RESULT_MAGIC (0x10203044)
00064
00065 typedef struct db_result* DB_RESULT;
00066
00067 struct db_row {
00068 unsigned int magic;
00069 DB_RESULT result;
00070 MYSQL_ROW data;
00071 };
00072 #define DB_ROW_MAGIC (0xbedea133)
00073 typedef struct db_row* DB_ROW;
00074
00075 #else
00076
00077 #include <sqlite3.h>
00078
00079 typedef sqlite3* DB_HANDLE;
00080 typedef unsigned long DB_ID;
00081
00082 struct db_result {
00083 unsigned int magic;
00084 int count;
00085 DB_HANDLE handle;
00086 sqlite3_stmt* data;
00087
00088 short first_row;
00089 };
00090 #define DB_RESULT_MAGIC (0x10203044)
00091
00092 typedef struct db_result* DB_RESULT;
00093
00094
00095 struct db_row {
00096 unsigned int magic;
00097 DB_RESULT result;
00098 };
00099 #define DB_ROW_MAGIC (0xbedea133)
00100 typedef struct db_row* DB_ROW;
00101
00102 #endif
00103
00104
00105
00106 void DbInit(void);
00107 void DbRundown(void);
00108
00109
00110
00111 int DbConnect(DB_HANDLE* dbhandle, const char* database, ...);
00112 int DbDisconnect(DB_HANDLE dbhandle);
00113 int DbConnected(DB_HANDLE dbhandle);
00114 int DbCheckConnected(DB_HANDLE dbhandle);
00115
00116 DB_HANDLE DbHandle(void);
00117
00118
00119
00120 int DbExecuteSql(DB_HANDLE handle, const char* stmt_str, DB_RESULT* result);
00121 void DbFreeResult(DB_RESULT result);
00122 int DbFetchRow(DB_RESULT result, DB_ROW* row);
00123 void DbFreeRow(DB_ROW row);
00124 int DbString(DB_ROW row, int field_index, char** result);
00125 void DbStringFree(char* string);
00126
00127
00128
00129 int DbExecuteSqlNoResult(DB_HANDLE dbhandle, const char* stmt_str);
00130 int DbUnsignedLong(DB_ROW row, int field_index, unsigned long* value);
00131 int DbInt(DB_ROW row, int field_index, int *value);
00132 int DbIntQuery(DB_HANDLE handle, int* value, const char* query);
00133 int DbStringBuffer(DB_ROW row, int field_index, char* buffer, size_t buflen);
00134 int DbRowId(DB_ROW, DB_ID* id);
00135
00136
00137
00138 const char* DbErrmsg(DB_HANDLE handle);
00139 int DbErrno(DB_HANDLE handle);
00140 int DbLastRowId(DB_HANDLE handle, DB_ID* id);
00141
00142
00143
00144 int DbBeginTransaction(void);
00145 int DbCommit(void);
00146 int DbRollback(void);
00147
00148
00149
00150 int DbFlavour(void);
00151 int db_version_check(void);
00152
00153 #ifdef __cplusplus
00154 };
00155 #endif
00156
00157 #endif