diff --git a/src/core/database.cpp b/src/core/database.cpp index a3240cf..12e42fa 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -186,6 +186,8 @@ void Database::beginTransaction() { exec("BEGIN TRANSACTION"); } void Database::endTransaction() { exec("END TRANSACTION"); } +void Database::rollbackTransaction() { exec("ROLLBACK TRANSACTION"); } + unsigned int Database::storeSellers(std::vector>& sellers, bool onlyDelete) { int retCode{}; @@ -221,10 +223,10 @@ unsigned int Database::storeSellers(std::vector>& seller retCode = sqlite3_step(stmt); if (retCode != SQLITE_DONE) { - + rollbackTransaction(); std::string errMsg(sqlite3_errmsg(db_)); sqlite3_finalize(stmt); - throw std::runtime_error(errMsg); + sqlite3_ throw std::runtime_error(errMsg); } ++count; sqlite3_finalize(stmt); diff --git a/src/core/database.h b/src/core/database.h index 2bd3e0b..3a6383d 100644 --- a/src/core/database.h +++ b/src/core/database.h @@ -31,6 +31,7 @@ class Database void init(); void beginTransaction(); void endTransaction(); + void rollbackTransaction(); void createNew(); int getVersion(); unsigned int storeArticles(std::vector articles);