Add Transaction support
This commit is contained in:
parent
5de3e0c295
commit
9ae86e4127
58
MySQLTransaction.cpp
Normal file
58
MySQLTransaction.cpp
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#include "MySQLTransaction.h"
|
||||||
|
|
||||||
|
Transaction::Transaction(MySQLConn& MySQLConnection) : conn(MySQLConnection)
|
||||||
|
{
|
||||||
|
_isReady=false;
|
||||||
|
_operated=false;
|
||||||
|
if(conn.exec("start transaction",nullptr)<0)
|
||||||
|
{
|
||||||
|
/// SQL execute error.
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_isReady=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Transaction::~Transaction()
|
||||||
|
{
|
||||||
|
if(!_operated)
|
||||||
|
{
|
||||||
|
rollback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Transaction::commit()
|
||||||
|
{
|
||||||
|
if(_operated) return -2;
|
||||||
|
|
||||||
|
if(conn.exec("commit",nullptr)<0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_operated=true;
|
||||||
|
return conn.getAffectedRows();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Transaction::rollback()
|
||||||
|
{
|
||||||
|
if(_operated) return -2;
|
||||||
|
|
||||||
|
if(conn.exec("rollback",nullptr)<0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_operated=true;
|
||||||
|
return conn.getAffectedRows();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Transaction::isReady() const
|
||||||
|
{
|
||||||
|
return _isReady;
|
||||||
|
}
|
26
MySQLTransaction.h
Normal file
26
MySQLTransaction.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#include "MySQLWrapper.h"
|
||||||
|
|
||||||
|
class Transaction
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/// Start Transaction on construct.
|
||||||
|
Transaction(MySQLConn& MySQLConnection);
|
||||||
|
|
||||||
|
/// Rollback transaction on destruct. If commit() or rollback() is called, this function will not execute any sql.
|
||||||
|
~Transaction();
|
||||||
|
|
||||||
|
/// NOTE: A Transaction can only call commit() or rollback() once, until it calls start commit again.
|
||||||
|
/// Commit transaction. Equals to SQL: COMMIT
|
||||||
|
/// ReturnValue: -1 SQL Error. -2 Operated >=0 Affected Rows
|
||||||
|
int commit();
|
||||||
|
/// Rollback transaction. Equals to SQL: ROLLBACK
|
||||||
|
/// ReturnValue: -1 SQL Error. -2 Operated >=0 Affected Rows
|
||||||
|
int rollback();
|
||||||
|
|
||||||
|
/// Check if a Transaction object is ready. If it is ready, then a transaction has started.
|
||||||
|
bool isReady() const;
|
||||||
|
private:
|
||||||
|
MySQLConn& conn;
|
||||||
|
bool _isReady;
|
||||||
|
bool _operated;
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user