From 54f53857279644914e0c2a2aed24060f31ed2575 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Tue, 15 May 2018 00:09:17 +0200 Subject: Implement exception safe sqlite transaction class (rollback) --- src/sql/Sql.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/sql/Sql.cpp') diff --git a/src/sql/Sql.cpp b/src/sql/Sql.cpp index 754a30d..4e65ddb 100644 --- a/src/sql/Sql.cpp +++ b/src/sql/Sql.cpp @@ -1,5 +1,7 @@ #include "../../include/odhtdb/sql/Sql.hpp" #include +#include +#include namespace odhtdb { @@ -18,4 +20,22 @@ namespace odhtdb } return SQLITE_OK; } + + SqlTransaction::SqlTransaction(sqlite3 *_db) : + db(_db) + { + assert(db); + sqlite3_exec(db, "BEGIN", 0, 0, 0); + } + + SqlTransaction::~SqlTransaction() + { + if(std::uncaught_exception()) + sqlite3_exec(db, "ROLLBACK", 0, 0, 0); + } + + void SqlTransaction::commit() + { + sqlite3_exec(db, "COMMIT", 0, 0, 0); + } } -- cgit v1.2.3