1#pragma once
2
3#include <mysqlxx/ResultBase.h>
4#include <mysqlxx/Row.h>
5
6
7namespace mysqlxx
8{
9
10class Connection;
11
12
13/** Результат выполнения запроса, предназначенный для чтения строк, одна за другой.
14 * В памяти при этом хранится только одна, текущая строка.
15 * В отличие от StoreQueryResult, произвольный доступ к строкам невозможен,
16 * а также, при чтении следующей строки, предыдущая становится некорректной.
17 * Вы обязаны прочитать все строки из результата
18 * (вызывать функцию fetch(), пока она не вернёт значение, преобразующееся к false),
19 * иначе при следующем запросе будет выкинуто исключение с текстом "Commands out of sync".
20 * Объект содержит ссылку на Connection.
21 * Если уничтожить Connection, то объект становится некорректным и все строки результата - тоже.
22 * Если задать следующий запрос в соединении, то объект и все строки тоже становятся некорректными.
23 * Использовать объект можно только для результата одного запроса!
24 * (При попытке присвоить объекту результат следующего запроса - UB.)
25 */
26class UseQueryResult : public ResultBase
27{
28public:
29 UseQueryResult(MYSQL_RES * res_, Connection * conn_, const Query * query_);
30
31 Row fetch();
32
33 /// Для совместимости
34 Row fetch_row() { return fetch(); }
35};
36
37}
38