52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
#include "model/database/database.h"
|
|
|
|
Database::Database(string filename){
|
|
this->filename = filename;
|
|
openConnection();
|
|
}
|
|
|
|
Database::~Database(){
|
|
closeConnection();
|
|
}
|
|
|
|
ResultTable Database::executeSQL(string statement){
|
|
sqlite3_stmt* stmt;
|
|
this->sql = statement;
|
|
this->returnCode = sqlite3_prepare_v2(this->db, statement.c_str(), -1, &stmt, NULL);
|
|
ResultTable t;
|
|
if (this->returnCode != SQLITE_OK){
|
|
fprintf(stderr, "Unable to successfully prepare SQL statement. Error code: %d\nError Message: %s\n", this->returnCode, sqlite3_errmsg(this->db));
|
|
return t;
|
|
}
|
|
|
|
t.extractData(stmt);
|
|
|
|
this->returnCode = sqlite3_finalize(stmt);
|
|
|
|
return t;
|
|
}
|
|
|
|
void Database::openConnection(){
|
|
this->returnCode = sqlite3_open(this->filename.c_str(), &this->db);
|
|
if (this->returnCode || this->db == NULL){
|
|
this->dbIsOpen = false;
|
|
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
|
|
exit(EXIT_FAILURE);
|
|
} else {
|
|
this->dbIsOpen = true;
|
|
}
|
|
}
|
|
|
|
void Database::closeConnection(){
|
|
this->returnCode = sqlite3_close(this->db);
|
|
this->dbIsOpen = false;
|
|
}
|
|
|
|
bool Database::tableExists(string tableName){
|
|
if (tableName.empty() || this->db == NULL || !this->dbIsOpen){
|
|
return false;
|
|
}
|
|
ResultTable t = executeSQL("SELECT name FROM sqlite_master WHERE type='table' AND name='"+tableName+"';");
|
|
return !t.isEmpty();
|
|
}
|