diff --git a/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h b/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h index 6041cf819..4383f95df 100644 --- a/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h +++ b/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h @@ -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; }; diff --git a/Data/MySQL/src/MySQLStatementImpl.cpp b/Data/MySQL/src/MySQLStatementImpl.cpp index 7cbe712e1..1630bd7fa 100644 --- a/Data/MySQL/src/MySQLStatementImpl.cpp +++ b/Data/MySQL/src/MySQLStatementImpl.cpp @@ -63,7 +63,7 @@ std::size_t MySQLStatementImpl::columnsReturned() const std::size_t MySQLStatementImpl::affectedRowCount() const { - return 0; + return _stmt.getAffectedRowCount(); } diff --git a/Data/MySQL/src/StatementExecutor.cpp b/Data/MySQL/src/StatementExecutor.cpp index a3c294240..5619e04b7 100644 --- a/Data/MySQL/src/StatementExecutor.cpp +++ b/Data/MySQL/src/StatementExecutor.cpp @@ -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; +} + }}}