Spec-Zone.ru › MySQL Connectors 1.0

5.4.86 mysql_use_result()

MYSQL_RES *
mysql_use_result(MYSQL *mysql)

Описание

После вызова mysql_real_query() или mysql_query(), для каждого оператора, успешно создающего результат набора, необходимо вызвать mysql_store_result() или mysql_use_result(). Также необходимо вызвать mysql_free_result() после завершения работы с набором результатов.

mysql_use_result() инициирует извлечение набора результатов, но не считывает его в клиентское приложение, как mysql_store_result(). Вместо этого, каждая строка должна извлекаться индивидуально с помощью вызова mysql_fetch_row(). Это считывает результат запроса напрямую с сервера без сохранения его во временной таблице или локальном буфере, что немного быстрее и потребляет меньше памяти, чем mysql_store_result(). Клиент выделяет память только для текущей строки и буфера связи, который может увеличиваться до байтов.

С другой стороны, не следует использовать mysql_use_result() для блокировки чтения, если выполняется много обработки каждой строки на стороне клиента или если вывод отправляется на экран, на котором пользователь может ввести ^S (остановить прокрутку). Это связывает сервер и не позволяет другим потокам обновлять таблицы, из которых извлекаются данные.

При использовании mysql_use_result(), необходимо выполнить mysql_fetch_row() до тех пор, пока не будет возвращено значение NULL. В противном случае необработанные строки возвращаются как часть набора результатов для следующего запроса. API C возвращает ошибку Commands out of sync; you can't run this command now, если это забыто!

Нельзя использовать mysql_data_seek(), mysql_row_seek(), mysql_row_tell(), mysql_num_rows() или mysql_affected_rows() с результатом, полученным от mysql_use_result(), а также нельзя выполнять другие запросы, пока mysql_use_result() не завершит работу. (Однако, после извлечения всех строк, mysql_num_rows() точно возвращает количество извлеченных строк.)

После завершения работы с набором результатов необходимо вызвать mysql_free_result().

Значения возврата

Структура результата MYSQL_RES. NULL, если произошла ошибка.

Ошибки

mysql_use_result() сбрасывает mysql_error() и mysql_errno(), если успешно выполняется.

  • Команды были выполнены в неправильном порядке.

  • Недостаточно памяти.

  • Сервер MySQL недоступен.

  • Подключение к серверу было потеряно во время запроса.

  • Произошла неизвестная ошибка.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/c-api-8.0-en/mysql-use-result.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API