MySQL: Implemented affectedRowCount

This commit is contained in:
Adrian Imboden 2013-02-21 20:34:20 +01:00
parent ae26e45bad
commit 4ce851672a
3 changed files with 14 additions and 2 deletions

View File

@ -85,6 +85,8 @@ public:
bool fetchColumn(std::size_t n, MYSQL_BIND *bind);
/// Fetches the column.
std::size_t getAffectedRowCount() const;
operator MYSQL_STMT* ();
/// Cast operator to native handle type.
@ -95,9 +97,10 @@ private:
StatementExecutor& operator=(const StatementExecutor&);
private:
MYSQL* _pSessionHandle;
MYSQL_STMT* _pHandle;
int _state;
std::size_t _affectedRowCount;
std::string _query;
};

View File

@ -63,7 +63,7 @@ std::size_t MySQLStatementImpl::columnsReturned() const
std::size_t MySQLStatementImpl::affectedRowCount() const
{
return 0;
return _stmt.getAffectedRowCount();
}

View File

@ -45,6 +45,8 @@ namespace MySQL {
StatementExecutor::StatementExecutor(MYSQL* mysql)
: _pSessionHandle(mysql)
, _affectedRowCount(0)
{
if (!(_pHandle = mysql_stmt_init(mysql)))
throw StatementException("mysql_stmt_init error");
@ -115,6 +117,8 @@ void StatementExecutor::execute()
throw StatementException("mysql_stmt_execute error", _pHandle, _query);
_state = STMT_EXECUTED;
_affectedRowCount = mysql_affected_rows(_pSessionHandle);
}
@ -149,5 +153,10 @@ bool StatementExecutor::fetchColumn(std::size_t n, MYSQL_BIND *bind)
return (res == 0);
}
std::size_t StatementExecutor::getAffectedRowCount() const
{
return _affectedRowCount;
}
}}}