Added method "tableExist" to RetroDb.

This commit is contained in:
thunder2 2015-08-15 14:50:51 +02:00
parent 3665238e61
commit 6ac107a954
2 changed files with 57 additions and 17 deletions

View File

@ -557,6 +557,43 @@ bool RetroDb::sqlUpdate(const std::string &tableName, std::string whereClause, c
return execSQL_bind(sqlQuery, paramBindings); return execSQL_bind(sqlQuery, paramBindings);
} }
bool RetroDb::tableExists(const std::string &tableName)
{
if (!isOpen()) {
return false;
}
std::string sqlQuery = "PRAGMA table_info(" + tableName + ");";
bool result = false;
sqlite3_stmt* stmt = NULL;
int rc = sqlite3_prepare_v2(mDb, sqlQuery.c_str(), sqlQuery.length(), &stmt, NULL);
if (rc == SQLITE_OK) {
rc = sqlite3_step(stmt);
switch (rc) {
case SQLITE_ROW:
result = true;
break;
case SQLITE_DONE:
break;
default:
std::cerr << "RetroDb::tableExists(): Error executing statement (code: " << rc << ")"
<< std::endl;
return false;
}
} else {
std::cerr << "RetroDb::tableExists(): Error preparing statement\n";
std::cerr << "Error code: " << sqlite3_errmsg(mDb)
<< std::endl;
}
if (stmt) {
sqlite3_finalize(stmt);
}
return result;
}
/********************** RetroCursor ************************/ /********************** RetroCursor ************************/

View File

@ -38,8 +38,6 @@
#include "contentvalue.h" #include "contentvalue.h"
class RetroCursor; class RetroCursor;
/*! /*!
@ -90,8 +88,6 @@ public:
/* modifying db */ /* modifying db */
public: public:
/*! /*!
* Start transaction * Start transaction
* @return true/false * @return true/false
@ -171,22 +167,13 @@ public:
*/ */
void vacuum(); void vacuum();
/*! /*!
* Build the "VALUE" part of an insertiong sql query * Check if table exist in database
* @param parameter contains place holder query * @param tableName table to check
* @param paramBindings * @return true/false
*/ */
void buildInsertQueryValue(const std::map<std::string, uint8_t> keyMap, const ContentValue& cv, bool tableExists(const std::string& tableName);
std::string& parameter, std::list<RetroBind*>& paramBindings);
/*!
* Build the "VALUE" part of an insertiong sql query
* @param parameter contains place holder query
* @param paramBindings
*/
void buildUpdateQueryValue(const std::map<std::string, uint8_t> keyMap, const ContentValue& cv,
std::string& parameter, std::list<RetroBind*>& paramBindings);
public: public:
static const int OPEN_READONLY; static const int OPEN_READONLY;
@ -197,6 +184,22 @@ private:
bool execSQL_bind(const std::string &query, std::list<RetroBind*>& blobs); bool execSQL_bind(const std::string &query, std::list<RetroBind*>& blobs);
/*!
* Build the "VALUE" part of an insertiong sql query
* @param parameter contains place holder query
* @param paramBindings
*/
void buildInsertQueryValue(const std::map<std::string, uint8_t> keyMap, const ContentValue& cv,
std::string& parameter, std::list<RetroBind*>& paramBindings);
/*!
* Build the "VALUE" part of an insertiong sql query
* @param parameter contains place holder query
* @param paramBindings
*/
void buildUpdateQueryValue(const std::map<std::string, uint8_t> keyMap, const ContentValue& cv,
std::string& parameter, std::list<RetroBind*>& paramBindings);
private: private:
sqlite3* mDb; sqlite3* mDb;