MySQL- Руководство разработчика

Обзор функций Delphi API


Функции, доступные в Delphi API, перечислены ниже и описаны более подробно в следующем разделе. Подробности в разделе "Описание функций Delphi API".



mysql_affected_rows() Возвращает число строк измененных последним запросом UPDATE, DELETE или INSERT.
mysql_close() Закрывает подключение к серверу.
mysql_connect() Соединяется с сервером.
mysql_change_user() Меняет пользователя и базу данных на открытом подключении.
mysql_create_db() Создает базу данных. Аналог команды SQL CREATE DATABASE.
mysql_data_seek() Ищет произвольную строку в наборе результатов запросов.
mysql_debug() Делает DBUG_PUSH для заданной строки.
mysql_drop_db() Удаляет базу данных. Эта функция аналогична команде SQL DROP DATABASE.
mysql_dump_debug_info() Заставляет сервер писать информацию отладки в файл регистрации.
mysql_eof() Определяет, читалась или нет последняя строка набора результатов.
mysql_errno() Возвращает код ошибки для вызванной недавно функции MySQL.
mysql_error() Возвращает текстовое сообщение об ошибке для вызванной недавно функции MySQL.
mysql_real_escape_string() Выходит из специальных символов в строке для использования в инструкции SQL, принимающей во внимание текущий набор символов данного подключения.
mysql_escape_string() Выходит из специальных символов в строке для использования в обычной инструкции SQL.
mysql_fetch_field() Возвращает тип следующего поля таблицы.
mysql_fetch_field_direct() Возвращает тип поля таблицы, по номеру поля.
mysql_fetch_fields() Возвращает массив всех структур поля.
mysql_fetch_lengths() Возвращает длины всех столбцов в текущей (актуальной) строке.
mysql_fetch_row() Выбирает следующую строку из набора результатов.
mysql_field_seek() Помещает курсор столбца в определенный параметром столбец.
mysql_field_count() Возвращает число столбцов результата для последнего запроса.
mysql_field_tell() Возвращает позицию курсора поля, используемого для последнего вызова mysql_fetch_field().
mysql_free_result() Освобождает память, используемую набором результатов.
mysql_get_client_info() Возвращает информацию о версии программы-клиента.
mysql_get_host_info() Возвращает строку, описывающую подключение.
mysql_get_proto_info() Возвращает версию протокола, используемую подключением.
mysql_get_server_info() Возвращает номер версии сервера.
mysql_info() Возвращает информацию относительно недавно выполненного запроса.
mysql_init() Получает или инициализирует структуру MYSQL.
mysql_insert_id() Возвращает ID, сгенерированный для столбца с поддержкой AUTO_INCREMENT предыдущим запросом.
mysql_kill() Уничтожает заданный поток.
mysql_list_dbs() Возвращает имена баз данных, соответствующие простому регулярному выражению.
mysql_list_fields() Возвращает имена полей, соответствующие простому регулярному выражению.
mysql_list_processes() Возвращает список текущих потоков сервера.
mysql_list_tables() Возвращает имена таблиц, соответствующие простому регулярному выражению.
mysql_num_fields() Возвращает число столбцов в наборе результатов.
mysql_num_rows() Возвращает число строк в наборе результатов.
mysql_options() Устанавливает опции связи для вызова mysql_connect().
mysql_ping() Проверяет работает или нет подключение с сервером, повторно соединяется по мере необходимости.
mysql_query() Выполняет запрос SQL, определенный как строка с нулевым символом в конце.
mysql_real_connect() Соединяется с сервером.
mysql_real_query() Выполняет запрос SQL, определенный как рассчитанная строка.
mysql_reload() Сообщает, чтобы сервер перезагрузил таблицы предоставления привилегий.
mysql_row_seek() Переходит к строке в наборе результатов, используя значение, возвращенное из mysql_row_tell().
mysql_row_tell() Возвращает позицию курсора строки.
mysql_select_db() Выбирает базу данных.
mysql_shutdown() Закрывает сервер.
mysql_stat() Возвращает состояние сервера.
mysql_store_result() Возвращает полный набор результатов пользователю.
mysql_thread_id() Возвращает ID потока.
mysql_thread_safe() Возвращает 1, если клиент компилируется как поточно-безопасный.
mysql_use_result() Инициализирует копию результата строка в строку.
<
Чтобы соединиться с сервером, вызовите mysql_init(), чтобы инициализировать драйвер подключения, затем вызовите mysql_real_connect() с этим драйвером (наряду с другой информацией типа hostname, имени пользователя и пароля). При подключении mysql_real_connect() устанавливает флажок reconnect (часть структуры MYSQL) в значение 1. Этот флажок указывает, что когда запрос не может выполняться из-за потерянного подключения, надо попробовать повторно соединиться с сервером перед отказом. Когда Вы закончите работу с подключением, вызовите mysql_close() для его закрытия.

В то время как подключение активно, пользователь может посылать запросы SQL серверу, применяя функции mysql_query() или mysql_real_query(). Различие между ними в том, что mysql_query() ожидает, что запрос будет определен как строка с нулевым символом в конце, в то время как mysql_real_query() ожидает рассчитанную строку. Если несет в себе двоичные данные (которые сами по себе могут включать нулевые байты), Вы должны использовать только mysql_real_query().

Для каждого запроса не-SELECT (например, INSERT, UPDATE, DELETE), Вы можете выяснить, сколько строк были изменены, вызывая mysql_affected_rows().

Для запросов SELECT Вы получаете выбранные строки в наборе результатов. Обратите внимание, что некоторые инструкции подобны SELECT в том плане, что они возвращают строки. Сюда входят SHOW, DESCRIBE и EXPLAIN. Они должны обработаться тем же самым методом, что и обычный SELECT.

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

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



После того, как Вы закончите работу с набором результатов, вызовите mysql_free_result(), чтобы освободить используемую память.

Два механизма поиска дополняют друг друга. Программы пользователя должны выбрать подход, который является наиболее подходящим для их требований. Практически же, клиентура имеет тенденцию обычно использовать mysql_store_result().

Преимущество mysql_store_result() в том, что, поскольку все строки были переданы пользователю, Вы не только можете обращаться к строкам последовательно, Вы можете также двигаться обратно в наборе результатов, используя mysql_data_seek() или mysql_row_seek(), чтобы изменить текущую (актуальную) позицию строки внутри набора результатов. Вы можете также выяснять, сколько там строк, вызывая mysql_num_rows(). С другой стороны, требования к памяти для mysql_store_result() могут быть очень высоки для больших наборов результатов, и Вы, вероятно, столкнетесь с проблемами нехватки памяти.

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

API позволяет клиентам ответить соответственно на запросы (получая строки только по мере необходимости) без того, чтобы знать, является или нет запрос SELECT. Вы можете делать это, вызывая mysql_store_result() после каждого mysql_query() (или mysql_real_query()). Если обращение к набору результатов прошло успешно, запросом был SELECT, и Вы можете читать строки. Если произошел сбой, вызовите mysql_field_count(), чтобы определить, должен или нет фактически ожидаться результат. Если mysql_field_count() возвращает ноль, запрос не возвратил никаких данных (это показывает, что это был INSERT, UPDATE, DELETE или что-то в этом роде) и не возвратит строки. Если mysql_field_count() отличен от нуля, запрос должен был возвратить строки, но не сделал этого. Это указывает, что запросом был SELECT, который потерпел неудачу.

Вызовы mysql_store_result() и mysql_use_result() позволяют Вам получать информацию относительно полей, которые составляют набор результатов (число полей, их имена, типы и т.п.). Вы можете обращаться к информации поля последовательно внутри строки, вызывая mysql_fetch_field() неоднократно, или по номеру поля внутри строки, вызывая mysql_fetch_field_direct() напрямую. Текущая (актуальная) позиция курсора поля может быть изменена вызовом mysql_field_seek(). Установка курсора поля воздействует на последующие обращения к mysql_fetch_field(). Вы можете также получать информацию для полей в любой момент, вызывая mysql_fetch_fields().

Для обнаружения и сообщения об ошибках MySQL обеспечивает доступ к информации ошибки посредством функций mysql_errno() и mysql_error(). Они возвращают код ошибки или сообщение об ошибке для последней вызванной функции, позволяя Вам определить, когда ошибка произошла, и что это было.


Содержание раздела