Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes

CppSQLite3DB Class Reference

#include <CppSQLite3.h>

List of all members.

Public Member Functions

 CppSQLite3DB ()
virtual ~CppSQLite3DB ()
void open (const char *szFile)
void close ()
bool tableExists (const char *szTable)
int execDML (const char *szSQL)
CppSQLite3Query execQuery (const char *szSQL)
int execScalar (const char *szSQL)
CppSQLite3Table getTable (const char *szSQL)
CppSQLite3Statement compileStatement (const char *szSQL)
sqlite_int64 lastRowId ()
void interrupt ()
void setBusyTimeout (int nMillisecs)

Static Public Member Functions

static const char * SQLiteVersion ()

Private Member Functions

 CppSQLite3DB (const CppSQLite3DB &db)
CppSQLite3DBoperator= (const CppSQLite3DB &db)
sqlite3_stmt * compile (const char *szSQL)
void checkDB ()

Private Attributes

sqlite3 * mpDB
int mnBusyTimeoutMs

Detailed Description

Definition at line 527 of file CppSQLite3.h.


Constructor & Destructor Documentation

CppSQLite3DB::CppSQLite3DB (  ) 

Definition at line 2215 of file CppSQLite3.cpp.

References mnBusyTimeoutMs, and mpDB.

{

        mpDB = 0;

        mnBusyTimeoutMs = 60000; // 60 seconds

}

CppSQLite3DB::~CppSQLite3DB (  )  [virtual]

Definition at line 2243 of file CppSQLite3.cpp.

References close().

{

        close();

}

Here is the call graph for this function:

CppSQLite3DB::CppSQLite3DB ( const CppSQLite3DB db  )  [private]

Definition at line 2229 of file CppSQLite3.cpp.

References mnBusyTimeoutMs, and mpDB.

{

        mpDB = db.mpDB;

        mnBusyTimeoutMs = 60000; // 60 seconds

}


Member Function Documentation

void CppSQLite3DB::checkDB (  )  [private]

Definition at line 2553 of file CppSQLite3.cpp.

References CPPSQLITE_ERROR, DONT_DELETE_MSG, and mpDB.

Referenced by compile(), compileStatement(), execDML(), execQuery(), and getTable().

{

        if (!mpDB)

        {

                throw CppSQLite3Exception(CPPSQLITE_ERROR,

                                                                "Database not open",

                                                                DONT_DELETE_MSG);

        }

}

Here is the caller graph for this function:

void CppSQLite3DB::close (  ) 

Definition at line 2299 of file CppSQLite3.cpp.

References mpDB.

Referenced by ~CppSQLite3DB().

{

        if (mpDB)

        {

                sqlite3_close(mpDB);

                mpDB = 0;

        }

}

Here is the caller graph for this function:

sqlite3_stmt * CppSQLite3DB::compile ( const char *  szSQL  )  [private]

Definition at line 2575 of file CppSQLite3.cpp.

References checkDB(), and mpDB.

Referenced by compileStatement(), and execQuery().

{

        checkDB();



        char* szError=0;

        const char* szTail=0;

        sqlite3_stmt* pVM;



        int nRet = sqlite3_prepare(mpDB, szSQL, -1, &pVM, &szTail);



        if (nRet != SQLITE_OK)

        {

                throw CppSQLite3Exception(nRet, szError);

        }



        return pVM;

}

Here is the call graph for this function:

Here is the caller graph for this function:

CppSQLite3Statement CppSQLite3DB::compileStatement ( const char *  szSQL  ) 

Definition at line 2319 of file CppSQLite3.cpp.

References checkDB(), compile(), and mpDB.

{

        checkDB();



        sqlite3_stmt* pVM = compile(szSQL);

        return CppSQLite3Statement(mpDB, pVM);

}

Here is the call graph for this function:

int CppSQLite3DB::execDML ( const char *  szSQL  ) 

Definition at line 2359 of file CppSQLite3.cpp.

References checkDB(), and mpDB.

Referenced by creaImageIO::SQLiteTreeHandler::DBCreate(), and creaImageIO::SQLiteTreeHandler::DBOpen().

{

        checkDB();



        char* szError=0;



        int nRet = sqlite3_exec(mpDB, szSQL, 0, 0, &szError);



        if (nRet == SQLITE_OK)

        {

                return sqlite3_changes(mpDB);

        }

        else

        {

                throw CppSQLite3Exception(nRet, szError);

        }

}

Here is the call graph for this function:

Here is the caller graph for this function:

CppSQLite3Query CppSQLite3DB::execQuery ( const char *  szSQL  ) 

Definition at line 2397 of file CppSQLite3.cpp.

References checkDB(), compile(), DONT_DELETE_MSG, and mpDB.

Referenced by execScalar().

{

        checkDB();



        sqlite3_stmt* pVM = compile(szSQL);



        int nRet = sqlite3_step(pVM);



        if (nRet == SQLITE_DONE)

        {

                // no rows

                return CppSQLite3Query(mpDB, pVM, true/*eof*/);

        }

        else if (nRet == SQLITE_ROW)

        {

                // at least 1 row

                return CppSQLite3Query(mpDB, pVM, false/*eof*/);

        }

        else

        {

                nRet = sqlite3_finalize(pVM);

                const char* szError= sqlite3_errmsg(mpDB);

                throw CppSQLite3Exception(nRet, (char*)szError, DONT_DELETE_MSG);

        }

}

Here is the call graph for this function:

Here is the caller graph for this function:

int CppSQLite3DB::execScalar ( const char *  szSQL  ) 

Definition at line 2451 of file CppSQLite3.cpp.

References CPPSQLITE_ERROR, DONT_DELETE_MSG, CppSQLite3Query::eof(), execQuery(), CppSQLite3Query::fieldValue(), and CppSQLite3Query::numFields().

Referenced by tableExists().

{

        CppSQLite3Query q = execQuery(szSQL);



        if (q.eof() || q.numFields() < 1)

        {

                throw CppSQLite3Exception(CPPSQLITE_ERROR,

                                                                "Invalid scalar query",

                                                                DONT_DELETE_MSG);

        }



        return atoi(q.fieldValue(0));

}

Here is the call graph for this function:

Here is the caller graph for this function:

CppSQLite3Table CppSQLite3DB::getTable ( const char *  szSQL  ) 

Definition at line 2481 of file CppSQLite3.cpp.

References checkDB(), and mpDB.

{

        checkDB();



        char* szError=0;

        char** paszResults=0;

        int nRet;

        int nRows(0);

        int nCols(0);



        nRet = sqlite3_get_table(mpDB, szSQL, &paszResults, &nRows, &nCols, &szError);



        if (nRet == SQLITE_OK)

        {

                return CppSQLite3Table(paszResults, nRows, nCols);

        }

        else

        {

                throw CppSQLite3Exception(nRet, szError);

        }

}

Here is the call graph for this function:

void CppSQLite3DB::interrupt (  )  [inline]

Definition at line 579 of file CppSQLite3.h.

References mpDB.

{ sqlite3_interrupt(mpDB); }

sqlite_int64 CppSQLite3DB::lastRowId (  ) 

Definition at line 2527 of file CppSQLite3.cpp.

References mpDB.

Referenced by creaImageIO::SQLiteTreeHandler::DBInsert().

{

        return sqlite3_last_insert_rowid(mpDB);

}

Here is the caller graph for this function:

void CppSQLite3DB::open ( const char *  szFile  ) 

Definition at line 2271 of file CppSQLite3.cpp.

References DONT_DELETE_MSG, mnBusyTimeoutMs, mpDB, and setBusyTimeout().

Referenced by creaImageIO::Synchronizer::CreateDB(), creaImageIO::TimestampDatabaseHandler::DBCreate(), creaImageIO::SQLiteTreeHandler::DBCreate(), creaImageIO::TimestampDatabaseHandler::DBOpen(), creaImageIO::SQLiteTreeHandler::DBOpen(), and creaImageIO::Synchronizer::Initialize().

{

        int nRet = sqlite3_open(szFile, &mpDB);



        if (nRet != SQLITE_OK)

        {

                const char* szError = sqlite3_errmsg(mpDB);

                throw CppSQLite3Exception(nRet, (char*)szError, DONT_DELETE_MSG);

        }



        setBusyTimeout(mnBusyTimeoutMs);

}

Here is the call graph for this function:

Here is the caller graph for this function:

CppSQLite3DB & CppSQLite3DB::operator= ( const CppSQLite3DB db  )  [private]

Definition at line 2255 of file CppSQLite3.cpp.

References mnBusyTimeoutMs, and mpDB.

{

        mpDB = db.mpDB;

        mnBusyTimeoutMs = 60000; // 60 seconds

        return *this;

}

void CppSQLite3DB::setBusyTimeout ( int  nMillisecs  ) 

Definition at line 2539 of file CppSQLite3.cpp.

References mnBusyTimeoutMs, and mpDB.

Referenced by open().

{

        mnBusyTimeoutMs = nMillisecs;

        sqlite3_busy_timeout(mpDB, mnBusyTimeoutMs);

}

Here is the caller graph for this function:

static const char* CppSQLite3DB::SQLiteVersion (  )  [inline, static]

Definition at line 587 of file CppSQLite3.h.

Referenced by creaImageIO::TimestampDatabaseHandler::TimestampDatabaseHandler().

{ return SQLITE_VERSION; }

Here is the caller graph for this function:

bool CppSQLite3DB::tableExists ( const char *  szTable  ) 

Definition at line 2337 of file CppSQLite3.cpp.

References execScalar().

Referenced by creaImageIO::SQLiteTreeHandler::DBImportTreeDescription().

{

        char szSQL[128];

        sprintf(szSQL,

                        "select count(*) from sqlite_master where type='table' and name='%s'",

                        szTable);

        int nRet = execScalar(szSQL);

        return (nRet > 0);

}

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

Definition at line 611 of file CppSQLite3.h.

Referenced by CppSQLite3DB(), open(), operator=(), and setBusyTimeout().

sqlite3* CppSQLite3DB::mpDB [private]

The documentation for this class was generated from the following files: