2 #include "ParaDatabase.h" 5 #include <util/mutex.h> 11 #ifndef MAX_SQL_LENGTH 12 #define MAX_SQL_LENGTH 2047 21 typedef pair<CICRecordSet*,bool> RSpair;
22 typedef pair<DBEntity*,bool> DBpair;
53 PE_CORE_DECL
void Release();
68 return --m_refcount<=0;
80 PE_CORE_DECL
int ExecuteSqlStringFormated(
const char *sql,...);
81 PE_CORE_DECL
int ExecuteSqlStringFormated(
const char16_t *sql,...);
90 PE_CORE_DECL
int ExecuteSqlScript(
const char *sql,
bool bBreakOnError =
false);
95 PE_CORE_DECL
int sql_prepare(
const char *sql,...);
96 PE_CORE_DECL
int sql_prepare(
const char16_t *sql,...);
103 PE_CORE_DECL
int sql_step();
106 PE_CORE_DECL
int sql_finalize();
112 PE_CORE_DECL
void OpenDB();
115 PE_CORE_DECL
void CloseDB();
121 PE_CORE_DECL
bool IsValid()
const {
return m_isValid;};
140 PE_CORE_DECL
CICRecordSet* CreateRecordSet(
const char* sql,...);
141 PE_CORE_DECL
CICRecordSet* CreateRecordSet(
const char16_t* sql,...);
143 PE_CORE_DECL
CICRecordSet* CreateRecordSet1(
const char* sql);
144 PE_CORE_DECL
CICRecordSet* CreateRecordSet1(
const char16_t* sql);
150 PE_CORE_DECL
void DeleteRecordSet(
CICRecordSet* recordset);
151 PE_CORE_DECL int64 GetLastInsertRowID();
156 PE_CORE_DECL
bool IsCreateFile();
161 PE_CORE_DECL
void SetCreateFile(
bool bCreateFile);
173 void exec_sql16(
const char16_t *sql);
174 void exec_sql(
const char *sql);
180 void prepare_sql(
const char16_t *sql,...);
181 void prepare_sql(
const char *sql,...);
185 sqlite3_stmt* exec_sql_prepare();
186 sqlite3_stmt* exec_sql_prepare16();
187 int exec_sql_finish();
188 int exec_sql_finish(sqlite3_stmt* stmt);
190 int exec_sql_step(sqlite3_stmt* stmt);
196 void OpenDB16(
const char16_t* dbname);
197 void OpenDB(
const char* dbname);
203 string PrepareDatabaseFile(
const string& filename);
228 std::u16string m_wsql;
231 sqlite3_stmt *m_stmt;
296 PE_CORE_DECL
static DBEntity * GetDB(
const char16_t* name);
297 PE_CORE_DECL
static DBEntity *OpenDBEntity();
303 PE_CORE_DECL
static DBEntity *OpenDBEntity(
const char16_t* dbname);
304 PE_CORE_DECL
static DBEntity *OpenDBEntity(
const char* dbname);
310 PE_CORE_DECL
static DBEntity *OpenDBEntity(
const char16_t* name,
const char16_t* dbname);
311 PE_CORE_DECL
static DBEntity *OpenDBEntity(
const char* name,
const char* dbname);
316 PE_CORE_DECL
static bool CloseDBEntity(
DBEntity * pEntity);
319 PE_CORE_DECL
static void Finalize();
320 PE_CORE_DECL
static void StaticInit();
331 friend class CICRoot;
it represents both a database entity and a database manager the static functions are for database man...
Definition: ICDBManager.h:282
int m_refcount
reference count of the asset.
Definition: ICDBManager.h:242
string m_filepath
db file path
Definition: ICDBManager.h:215
Definition: ICMapTrace.h:28
vector< RSpair > m_RSpool
a pool of sql statements created by the user.
Definition: ICDBManager.h:211
ParaEngine::mutex m_mutex
this makes all db query thread-safe
Definition: ICDBManager.h:234
exceptions thrown from database
Definition: ICDBManager.h:27
bool m_bEncodingUTF8
whether the database use UTF-8 encoding; if false it will be UTF-16 unicode encoding.
Definition: ICDBManager.h:219
sqlite3_stmt * GetStatement()
get the current statement
Definition: ICDBManager.h:109
Definition: ICGenManager.h:11
int m_nSQLite_OpenFlags
the opening flags for sqlite3_open_v2().
Definition: ICDBManager.h:225
PE_CORE_DECL const string & GetConnectionString()
get the connection string.
Definition: ICDBManager.h:126
ParaInfoCenter::DBEntity DBEntity
database entity
Definition: ParaDatabase.h:13
void addref()
add reference count of the asset.
Definition: ICDBManager.h:57
Definition: inftrees.h:24
Definition: PEtypes.h:503
u16string m_name
alias name of the db
Definition: ICDBManager.h:213
PE_CORE_DECL bool IsValid() const
return true if database is now successfully opened.
Definition: ICDBManager.h:121
a single database file.
Definition: ICDBManager.h:39
sqlite3 * GetDBHandle()
get sqlite3 object
Definition: ICDBManager.h:132
static ParaEngine::mutex m_mutex
this makes all db query thread-safe
Definition: ICDBManager.h:327
int GetRefCount()
get the reference count
Definition: ICDBManager.h:71
bool delref()
decrease reference count of the asset.
Definition: ICDBManager.h:65
cross platform mutex
Definition: mutex.h:95
bool m_isValid
whether db is opened.
Definition: ICDBManager.h:217
sqlite3 * m_db
database handle
Definition: ICDBManager.h:209
bool m_bIsCreateFile
this is true if database file is opened by creating a new database file.
Definition: ICDBManager.h:222
static vector< DBpair > m_DBpool
all databases
Definition: ICDBManager.h:324
CICRecordSet is both the result and wrapper of a sql statement(procedure).
Definition: ICRecordSet.h:90