diff options
Diffstat (limited to 'libmysqlpp')
-rw-r--r-- | libmysqlpp/selectcommand.cpp | 7 | ||||
-rw-r--r-- | libmysqlpp/selectcommand.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/libmysqlpp/selectcommand.cpp b/libmysqlpp/selectcommand.cpp index 41b28b6..f0a5974 100644 --- a/libmysqlpp/selectcommand.cpp +++ b/libmysqlpp/selectcommand.cpp @@ -8,6 +8,7 @@ MySQL::SelectCommand::SelectCommand(const Connection * conn, const std::string & DB::Command(sql), DB::SelectCommand(sql), MySQL::Command(conn, sql), + prepared(false), executed(false) { } @@ -15,7 +16,7 @@ MySQL::SelectCommand::SelectCommand(const Connection * conn, const std::string & void MySQL::SelectCommand::execute() { - if (!executed) { + if (!prepared) { bindParams(); fields.resize(mysql_stmt_field_count(stmt)); for (Binds::iterator i = fields.begin(); i != fields.end(); ++i) { @@ -68,6 +69,9 @@ MySQL::SelectCommand::execute() if (mysql_stmt_bind_result(stmt, &fields.front())) { throw Error(mysql_stmt_error(stmt)); } + prepared = true; + } + if (!executed) { if (mysql_stmt_execute(stmt)) { throw Error(mysql_stmt_error(stmt)); } @@ -86,6 +90,7 @@ MySQL::SelectCommand::fetch() case 0: return true; case MYSQL_NO_DATA: + executed = false; return false; default: throw Error(mysql_stmt_error(stmt)); diff --git a/libmysqlpp/selectcommand.h b/libmysqlpp/selectcommand.h index 7ffff54..58c569b 100644 --- a/libmysqlpp/selectcommand.h +++ b/libmysqlpp/selectcommand.h @@ -15,6 +15,7 @@ namespace MySQL { void execute(); private: + bool prepared; bool executed; Binds fields; }; |