2011-03-03 19:57:34 +00:00
|
|
|
|
#ifndef MYSQLXX_USEQUERYRESULT_H
|
|
|
|
|
#define MYSQLXX_USEQUERYRESULT_H
|
|
|
|
|
|
|
|
|
|
#include <mysqlxx/ResultBase.h>
|
|
|
|
|
#include <mysqlxx/Row.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace mysqlxx
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
class Connection;
|
2011-03-18 20:26:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Результат выполнения запроса, предназначенный для чтения строк, одна за другой.
|
|
|
|
|
* В памяти при этом хранится только одна, текущая строка.
|
|
|
|
|
* В отличие от StoreQueryResult, произвольный доступ к строкам невозможен,
|
|
|
|
|
* а также, при чтении следующей строки, предыдущая становится некорректной.
|
|
|
|
|
* Вы обязаны прочитать все строки из результата
|
|
|
|
|
* (вызывать функцию fetch(), пока она не вернёт значение, преобразующееся к false),
|
|
|
|
|
* иначе при следующем запросе будет выкинуто исключение с текстом "Commands out of sync".
|
|
|
|
|
* Объект содержит ссылку на Connection.
|
|
|
|
|
* Если уничтожить Connection, то объект становится некорректным и все строки результата - тоже.
|
|
|
|
|
* Если задать следующий запрос в соединении, то объект и все строки тоже становятся некорректными.
|
2011-04-28 20:23:56 +00:00
|
|
|
|
* Использовать объект можно только для результата одного запроса!
|
|
|
|
|
* (При попытке присвоить объекту результат следующего запроса - UB.)
|
2011-03-18 20:26:54 +00:00
|
|
|
|
*/
|
2011-03-03 19:57:34 +00:00
|
|
|
|
class UseQueryResult : public ResultBase
|
|
|
|
|
{
|
|
|
|
|
public:
|
2011-03-18 20:26:54 +00:00
|
|
|
|
UseQueryResult(MYSQL_RES * res_, Connection * conn_, const Query * query_);
|
2011-03-15 20:56:42 +00:00
|
|
|
|
|
|
|
|
|
Row fetch();
|
|
|
|
|
|
|
|
|
|
/// Для совместимости
|
|
|
|
|
Row fetch_row() { return fetch(); }
|
2011-03-03 19:57:34 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|