1 | #pragma once |
2 | |
3 | #include <mysqlxx/ResultBase.h> |
4 | #include <mysqlxx/Row.h> |
5 | |
6 | |
7 | namespace mysqlxx |
8 | { |
9 | |
10 | class 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 | */ |
26 | class UseQueryResult : public ResultBase |
27 | { |
28 | public: |
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 | |