From 76e111fa073d0074241242334983b5e7d8f64c2d Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Thu, 23 Dec 2010 16:05:43 +0100 Subject: Core/DBLayer: Allow asynchronous queries with callbacks to be executed in prepared statement format as well. + Cleanup and documentation --HG-- branch : trunk --- src/server/shared/Database/PreparedStatement.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/server/shared/Database/PreparedStatement.cpp') diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp index b95fb485079..95d0f89ba67 100755 --- a/src/server/shared/Database/PreparedStatement.cpp +++ b/src/server/shared/Database/PreparedStatement.cpp @@ -332,10 +332,19 @@ void MySQLPreparedStatement::setValue(MYSQL_BIND* param, enum_field_types type, //- Execution PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt) : -m_stmt(stmt) +m_stmt(stmt), +m_has_result(false) { } +PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultFuture result) : +m_stmt(stmt), +m_has_result(true), +m_result(result) +{ +} + + PreparedStatementTask::~PreparedStatementTask() { delete m_stmt; @@ -343,5 +352,17 @@ PreparedStatementTask::~PreparedStatementTask() bool PreparedStatementTask::Execute() { + if (m_has_result) + { + PreparedResultSet* result = m_conn->Query(m_stmt); + if (!result || !result->GetRowCount()) + { + m_result.set(PreparedQueryResult(NULL)); + return false; + } + m_result.set(PreparedQueryResult(result)); + return true; + } + return m_conn->Execute(m_stmt); } -- cgit v1.2.3