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 {
00031 class _SQLiteWrapperExport SQLiteDatabase
00032 {
00033 public:
00036 SQLiteDatabase();
00037
00057 SQLiteDatabase(const char *filename, int flags, const char *zVfs);
00058
00078 SQLiteDatabase(const std::string &filename, int flags, const char *zVfs);
00079
00083 SQLiteDatabase(const wchar_t *filename);
00084
00086 virtual ~SQLiteDatabase();
00087
00107 void Open(const char *filename, int flags, const char *zVfs);
00108
00128 void Open(const std::string &filename, int flags, const char *zVfs);
00129
00133 void Open(const wchar_t *filename);
00134
00136 void Close();
00137
00139 sqlite3 *GetDatabaseHandle() const {return mDatabaseHandle;}
00141 inline int GetLibVersionNumber() const {return sqlite3_libversion_number();}
00144 int GetDatabaseChanges() const {return sqlite3_changes(mDatabaseHandle);}
00150 int GetTotalDatabaseChanges() const {return sqlite3_total_changes(mDatabaseHandle);}
00154 void InterruptDatabaseOperation() const {sqlite3_interrupt(mDatabaseHandle);}
00158 int GetAutoCommit() const {return sqlite3_get_autocommit(mDatabaseHandle);}
00159
00163 inline void ActivateTracing() const {sqlite3_trace(mDatabaseHandle, &Kompex::SQLiteDatabase::TraceOutput, 0);}
00169 inline void ActivateProfiling() const {sqlite3_profile(mDatabaseHandle, &Kompex::SQLiteDatabase::ProfileOutput, 0);}
00170
00179 inline void SetSoftHeapLimit(int heapLimit) const {sqlite3_soft_heap_limit(heapLimit);}
00180
00186 inline int ReleaseMemory(int bytesOfMemory) const {return sqlite3_release_memory(bytesOfMemory);}
00187
00189 long long GetMemoryUsage() const {return sqlite3_memory_used();}
00190
00193 long long GetMemoryHighwaterMark(bool resetFlag = false) const {return sqlite3_memory_highwater(resetFlag);}
00194
00199 void MoveDatabaseToMemory();
00200
00204 void SaveDatabaseFromMemoryToFile(const std::string &filename = "");
00205
00213 long long GetLastInsertRowId() const {return sqlite3_last_insert_rowid(mDatabaseHandle);}
00214
00217 bool IsDatabaseReadOnly();
00218
00220 inline void ReleaseMemory() {sqlite3_db_release_memory(mDatabaseHandle);}
00221
00222 protected:
00224 static void TraceOutput(void *ptr, const char *sql);
00226 static void ProfileOutput(void* ptr, const char* sql, sqlite3_uint64 time);
00228 static int ProcessDDLRow(void *db, int nColumns, char **values, char **columns);
00230 static int ProcessDMLRow(void *db, int nColumns, char **values, char **columns);
00231
00232 private:
00234 struct sqlite3 *mDatabaseHandle;
00236 std::string mDatabaseFilename;
00238 bool mIsMemoryDatabaseActive;
00239 };
00240
00241 };
00242
00243 #endif // KompexSQLiteDatabase_H