From a41e99223e1dfe707afd0fa8004bcb6f267f0f04 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sat, 11 Sep 2010 21:10:54 +0200 Subject: Core/DBLayer: * Rename QueryResult class to ResultSet * Rename QueryResult_AutoPtr to QueryResult * Declare ACE refcounted auto pointer for PreparedResultSet class --HG-- branch : trunk --- src/server/shared/Database/QueryResult.cpp | 34 ++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'src/server/shared/Database/QueryResult.cpp') diff --git a/src/server/shared/Database/QueryResult.cpp b/src/server/shared/Database/QueryResult.cpp index c5a081a514e..6df3d53956a 100644 --- a/src/server/shared/Database/QueryResult.cpp +++ b/src/server/shared/Database/QueryResult.cpp @@ -19,8 +19,9 @@ */ #include "DatabaseEnv.h" +#include "Log.h" -QueryResult::QueryResult(MYSQL_RES *result, MYSQL_FIELD *fields, uint64 rowCount, uint32 fieldCount) +ResultSet::ResultSet(MYSQL_RES *result, MYSQL_FIELD *fields, uint64 rowCount, uint32 fieldCount) : mFieldCount(fieldCount) , mRowCount(rowCount) , mResult(result) @@ -32,12 +33,12 @@ QueryResult::QueryResult(MYSQL_RES *result, MYSQL_FIELD *fields, uint64 rowCount mCurrentRow[i].SetType(ConvertNativeType(fields[i].type)); } -QueryResult::~QueryResult() +ResultSet::~ResultSet() { EndQuery(); } -bool QueryResult::NextRow() +bool ResultSet::NextRow() { MYSQL_ROW row; @@ -57,7 +58,7 @@ bool QueryResult::NextRow() return true; } -void QueryResult::EndQuery() +void ResultSet::EndQuery() { if (mCurrentRow) { @@ -72,7 +73,7 @@ void QueryResult::EndQuery() } } -enum Field::DataTypes QueryResult::ConvertNativeType(enum_field_types mysqlType) const +enum Field::DataTypes ResultSet::ConvertNativeType(enum_field_types mysqlType) const { switch (mysqlType) { @@ -144,7 +145,7 @@ void ResultBind::BindResult(uint32& num_rows) m_rBind[i].buffer_length = size; m_rBind[i].length = &m_length[i]; m_rBind[i].is_null = &m_isNull[i]; - m_rBind[i].error = NULL;//&m_error[i]; + m_rBind[i].error = NULL; m_rBind[i].is_unsigned = field->flags & UNSIGNED_FLAG; ++i; @@ -238,7 +239,22 @@ std::string PreparedResultSet::GetString(uint32 index) if (!CheckFieldIndex(index)) return std::string(""); - const char* temp = static_cast(rbind->m_rBind[index].buffer); - size_t len = *rbind->m_rBind[index].length; - return std::string(temp, len ); + return std::string(static_cast(rbind->m_rBind[index].buffer), *rbind->m_rBind[index].length); +} + +bool PreparedResultSet::NextRow() +{ + if (row_position >= num_rows) + return false; + + int retval = mysql_stmt_fetch( rbind->m_stmt ); + + if (!retval || retval == MYSQL_DATA_TRUNCATED) + retval = true; + + if (retval == MYSQL_NO_DATA) + retval = false; + + ++row_position; + return retval; } \ No newline at end of file -- cgit v1.2.3