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 #ifndef KompexSQLiteDatabase_H
00020 #define KompexSQLiteDatabase_H
00021
00022 #include <string>
00023
00024 #include "sqlite3.h"
00025
00026 #include "KompexSQLitePrerequisites.h"
00027
00028 namespace Kompex
00029 {
00030 class _SQLiteWrapperExport SQLiteDatabase
00031 {
00032 public:
00035 SQLiteDatabase();
00036
00056 SQLiteDatabase(const char *filename, int flags, const char *zVfs);
00057
00077 SQLiteDatabase(const std::string &filename, int flags, const char *zVfs);
00078
00082 SQLiteDatabase(const wchar_t *filename);
00083
00085 virtual ~SQLiteDatabase();
00086
00106 void Open(const char *filename, int flags, const char *zVfs);
00107
00127 void Open(const std::string &filename, int flags, const char *zVfs);
00128
00132 void Open(const wchar_t *filename);
00133
00135 void Close();
00136
00138 sqlite3 *GetDatabaseHandle() const {return mDatabaseHandle;}
00140 inline int GetLibVersionNumber() const {return sqlite3_libversion_number();}
00143 int GetDatabaseChanges() const {return sqlite3_changes(mDatabaseHandle);}
00149 int GetTotalDatabaseChanges() const {return sqlite3_total_changes(mDatabaseHandle);}
00153 void InterruptDatabaseOperation() const {sqlite3_interrupt(mDatabaseHandle);}
00157 int GetAutoCommit() const {return sqlite3_get_autocommit(mDatabaseHandle);}
00158
00162 inline void ActivateTracing() const {sqlite3_trace(mDatabaseHandle, &Kompex::SQLiteDatabase::TraceOutput, 0);}
00168 inline void ActivateProfiling() const {sqlite3_profile(mDatabaseHandle, &Kompex::SQLiteDatabase::ProfileOutput, 0);}
00169
00178 inline void SetSoftHeapLimit(int heapLimit) const {sqlite3_soft_heap_limit(heapLimit);}
00179
00185 inline int ReleaseMemory(int bytesOfMemory) const {return sqlite3_release_memory(bytesOfMemory);}
00186
00188 long long GetMemoryUsage() const {return sqlite3_memory_used();}
00189
00192 long long GetMemoryHighwaterMark(bool resetFlag = false) const {return sqlite3_memory_highwater(resetFlag);}
00193
00198 void MoveDatabaseToMemory();
00199
00203 void SaveDatabaseFromMemoryToFile(const std::string &filename = "");
00204
00212 long long GetLastInsertRowId() const {return sqlite3_last_insert_rowid(mDatabaseHandle);}
00213
00214 protected:
00216 static void TraceOutput(void *ptr, const char *sql);
00218 static void ProfileOutput(void* ptr, const char* sql, sqlite3_uint64 time);
00220 static int ProcessDDLRow(void *db, int nColumns, char **values, char **columns);
00222 static int ProcessDMLRow(void *db, int nColumns, char **values, char **columns);
00223
00224 private:
00226 struct sqlite3 *mDatabaseHandle;
00228 std::string mDatabaseFilename;
00230 bool mIsMemoryDatabaseActive;
00231 };
00232
00233 };
00234
00235 #endif // KompexSQLiteDatabase_H