19 #ifndef KompexSQLiteStatement_H
20 #define KompexSQLiteStatement_H
54 void SqlStatement(
const char *sqlStatement);
66 void SqlStatement(
const wchar_t *sqlStatement);
71 inline void Sql(
const std::string &sql) {Prepare(sql.c_str());}
75 inline void Sql(
const char *sql) {Prepare(sql);}
79 inline void Sql(
const std::wstring &sql) {Prepare(sql.c_str());}
83 inline void Sql(
const wchar_t *sql) {Prepare(sql);}
87 bool FetchRow()
const;
95 float SqlAggregateFuncResult(
const std::string &countSql);
100 float SqlAggregateFuncResult(
wchar_t *countSql);
105 float SqlAggregateFuncResult(
const char *countSql);
110 const char *GetColumnName(
int column)
const;
114 const char *GetColumnName(
const std::string &column)
const;
119 wchar_t *GetColumnName16(
int column)
const;
123 wchar_t *GetColumnName16(
const std::string &column)
const;
134 int GetColumnType(
int column)
const;
144 int GetColumnType(
const std::string &column)
const;
150 const unsigned char *GetColumnCString(
int column)
const;
155 const unsigned char *GetColumnCString(
const std::string &column)
const;
161 std::string GetColumnString(
int column)
const;
166 std::string GetColumnString(
const std::string &column)
const;
172 wchar_t *GetColumnString16(
int column)
const;
177 wchar_t *GetColumnString16(
const std::string &column)
const;
182 double GetColumnDouble(
int column)
const;
186 double GetColumnDouble(
const std::string &column)
const;
191 int GetColumnInt(
int column)
const;
195 int GetColumnInt(
const std::string &column)
const;
203 bool GetColumnBool(
int column)
const;
210 bool GetColumnBool(
const std::string &column)
const;
215 int64 GetColumnInt64(
int column)
const;
219 int64 GetColumnInt64(
const std::string &column)
const;
224 const void *GetColumnBlob(
int column)
const;
228 const void *GetColumnBlob(
const std::string &column)
const;
233 int GetColumnBytes(
int column)
const;
237 int GetColumnBytes(
const std::string &column)
const;
241 int GetColumnBytes16(
int column)
const;
245 int GetColumnBytes16(
const std::string &column)
const;
250 const char *GetColumnDatabaseName(
int column)
const;
254 const char *GetColumnDatabaseName(
const std::string &column)
const;
258 wchar_t *GetColumnDatabaseName16(
int column)
const;
262 wchar_t *GetColumnDatabaseName16(
const std::string &column)
const;
267 const char *GetColumnTableName(
int column)
const;
271 const char *GetColumnTableName(
const std::string &column)
const;
275 wchar_t *GetColumnTableName16(
int column)
const;
279 wchar_t *GetColumnTableName16(
const std::string &column)
const;
284 const char *GetColumnOriginName(
int column)
const;
288 const char *GetColumnOriginName(
const std::string &column)
const;
292 wchar_t *GetColumnOriginName16(
int column)
const;
296 wchar_t *GetColumnOriginName16(
const std::string &column)
const;
301 const char *GetColumnDeclaredDatatype(
int column)
const;
305 const char *GetColumnDeclaredDatatype(
const std::string &column)
const;
309 wchar_t *GetColumnDeclaredDatatype16(
int column)
const;
313 wchar_t *GetColumnDeclaredDatatype16(
const std::string &column)
const;
317 int GetColumnCount()
const;
320 inline int GetDataCount()
const {
return sqlite3_data_count(mStatement);}
326 void BindInt(
int column,
int value)
const;
331 void BindBool(
int column,
bool value)
const;
336 void BindString(
int column,
const std::string &
string)
const;
341 void BindString16(
int column,
const wchar_t *
string)
const;
346 void BindDouble(
int column,
double value)
const;
351 void BindInt64(
int column,
int64 value)
const;
355 void BindNull(
int column)
const;
365 void BindBlob(
int column,
const void* data,
int numberOfBytes = -1)
const;
370 void BindZeroBlob(
int column,
int length)
const;
377 void Execute()
const;
380 void ExecuteAndFree();
387 void GetTable(
const std::string &sql,
unsigned short consoleOutputColumnWidth = 20)
const;
394 void GetTableColumnMetadata(
const std::string &tableName,
const std::string &columnName)
const;
398 void ClearBindings()
const;
406 void BeginTransaction();
409 void CommitTransaction();
411 inline void RollbackTransaction()
414 SqlStatement(
"ROLLBACK;");
423 inline void Transaction(
const char *sql) {mTransactionSQL[mTransactionID++] = std::make_pair(sql,
false);}
430 inline void Transaction(
const std::string &sql) {mTransactionSQL[mTransactionID++] = std::make_pair(sql.c_str(),
false);}
437 inline void Transaction(
const wchar_t *sql) {mTransactionSQL16[mTransactionID++] = std::make_pair(sql,
false);}
444 void SecureTransaction(
const char *sql);
450 void SecureTransaction(
const std::string sql);
456 void SecureTransaction(
const wchar_t *sql);
461 std::string GetSqlResultString(
const std::string &sql,
const std::string &defaultReturnValue =
"");
465 std::string GetSqlResultString(
const char *sql,
const std::string &defaultReturnValue =
"");
469 std::string GetSqlResultString(
const wchar_t *sql,
const std::string &defaultReturnValue =
"");
474 int GetSqlResultInt(
const std::string &sql,
int defaultReturnValue = -1);
478 int GetSqlResultInt(
const char *sql,
int defaultReturnValue = -1);
482 int GetSqlResultInt(
const wchar_t *sql,
int defaultReturnValue = -1);
487 int64 GetSqlResultInt64(
const std::string &sql,
int64 defaultReturnValue = -1);
491 int64 GetSqlResultInt64(
const char *sql,
int64 defaultReturnValue = -1);
495 int64 GetSqlResultInt64(
const wchar_t *sql,
int64 defaultReturnValue = -1);
500 double GetSqlResultDouble(
const std::string &sql,
double defaultReturnValue = -1);
504 double GetSqlResultDouble(
const char *sql,
double defaultReturnValue = -1);
508 double GetSqlResultDouble(
const wchar_t *sql,
double defaultReturnValue = -1);
518 const unsigned char *GetSqlResultCString(
const std::string &sql,
const unsigned char *defaultReturnValue = 0);
527 const unsigned char *GetSqlResultCString(
const char *sql,
const unsigned char *defaultReturnValue = 0);
536 const unsigned char *GetSqlResultCString(
const wchar_t *sql,
const unsigned char *defaultReturnValue = 0);
546 wchar_t *GetSqlResultString16(
const std::string &sql,
wchar_t *defaultReturnValue = 0);
555 wchar_t *GetSqlResultString16(
const char *sql,
wchar_t *defaultReturnValue = 0);
564 wchar_t *GetSqlResultString16(
const wchar_t *sql,
wchar_t *defaultReturnValue = 0);
574 const void *GetSqlResultBlob(
const std::string &sql,
const void *defaultReturnValue = 0);
583 const void *GetSqlResultBlob(
const char *sql,
const void *defaultReturnValue = 0);
592 const void *GetSqlResultBlob(
const wchar_t *sql,
const void *defaultReturnValue = 0);
598 unsigned int GetNumberOfRows();
616 static std::string Mprintf(
const char *sql, ...);
633 static std::string Vmprintf(
const char *sql, va_list args);
638 void Prepare(
const char *sqlStatement);
641 void Prepare(
const wchar_t *sqlStatement);
645 void CheckStatement()
const;
647 void CheckDatabase()
const;
653 const unsigned char *SqlResultCString(
const unsigned char *defaultReturnValue);
655 wchar_t *SqlResultString16(
wchar_t *defaultReturnValue);
657 const void *SqlResultBlob(
const void *defaultReturnValue);
662 void CheckColumnNumber(
int columnNumber,
const std::string &functionName =
"")
const;
665 void CleanUpTransaction();
671 inline void DeleteTransactionSqlStr(
bool isMemAllocated, T *str)
681 template<
class S,
class T>
682 T GetColumnValue(S sql, T(
Kompex::SQLiteStatement::*getColumnFunc)(
int columnNumber)
const, T defaultReturnValue);
686 void AssignColumnNumberToColumnName()
const;
688 int GetAssignedColumnNumber(
const std::string &columnName)
const;
716 #endif // KompexSQLiteStatement_H