Core/DBLayer: Allow asynchronous queries with callbacks to be executed in prepared statement format as well.

+ Cleanup and documentation

--HG--
branch : trunk
This commit is contained in:
Machiavelli
2010-12-23 16:05:43 +01:00
parent b6724bea03
commit 76e111fa07
5 changed files with 120 additions and 29 deletions

View File

@@ -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);
}