Spec-Zone .ru
спецификации, руководства, описания, API

21.8.6. C Краткий обзор API-функции

Функции, доступные в API C, получаются в итоге здесь и описываются более подробно в более позднем разделе. См. Раздел 21.8.7, "Описания API-функции C".

Табличные 21.36. C Имена API-функции и Описания

Функция Описание
my_init() Инициализируйте глобальные переменные, и распараллельте обработчик в ориентированных на многопотоковое исполнение программах
mysql_affected_rows() Возвращает число строк, измененных/удаленных/вставленных последним UPDATE, DELETE, или INSERT запрос
mysql_autocommit() Переключатели автоматически фиксируют режим вкл\выкл
mysql_change_user() Пользователь изменений и база данных на открытом соединении
mysql_character_set_name() Возвратите имя набора символов значения по умолчанию для текущего соединения
mysql_client_find_plugin() Возвратите указатель на плагин
mysql_client_register_plugin() Зарегистрируйте плагин
mysql_close() Закрывает соединение сервера
mysql_commit() Фиксирует транзакцию
mysql_connect() Соединяется с сервером MySQL (эта функция осуждается; использовать mysql_real_connect() вместо этого)
mysql_create_db() Создает базу данных (эта функция осуждается; используйте SQL-оператор CREATE DATABASE вместо этого)
mysql_data_seek() Ищет на произвольный номер строки в наборе результатов запроса
mysql_debug() Делает a DBUG_PUSH с данной строкой
mysql_drop_db() Отбрасывает базу данных (эта функция осуждается; используйте SQL-оператор DROP DATABASE вместо этого)
mysql_dump_debug_info() Заставляет сервер записать отладочную информацию в журнал
mysql_eof() Определяет, была ли последняя строка набора результатов считана (эта функция осуждается; mysql_errno() или mysql_error() может использоваться вместо этого),
mysql_errno() Возвращает код ошибки для последний раз вызванной функции MySQL
mysql_error() Возвращает сообщение об ошибке для последний раз вызванной функции MySQL
mysql_escape_string() Escape специальные символы в строке для использования в SQL-операторе
mysql_fetch_field() Возвращает тип следующего табличного поля
mysql_fetch_field_direct() Возвращает тип табличного поля, учитывая полевое число
mysql_fetch_fields() Возвращает массив всех полевых структур
mysql_fetch_lengths() Возвращает длины всех столбцов в текущей строке
mysql_fetch_row() Выбирает следующую строку от набора результатов
mysql_field_count() Возвращает число столбцов результата для нового оператора
mysql_field_seek() Помещает курсор столбца в указанный столбец
mysql_field_tell() Возвращает позицию полевого курсора, используемого для последнего mysql_fetch_field()
mysql_free_result() Освобождает память, используемую набором результатов
mysql_get_character_set_info() Возвратите информацию о наборе символов значения по умолчанию
mysql_get_client_info() Клиентская информация о версии возвратов как строка
mysql_get_client_version() Клиентская информация о версии возвратов как целое число
mysql_get_host_info() Возвращает строку, описывающую соединение
mysql_get_proto_info() Возвращает версию протокола, используемую соединением
mysql_get_server_info() Возвращает номер версии сервера
mysql_get_server_version() Номер версии возвратов сервера как целое число
mysql_get_ssl_cipher() Возвратите текущий шифр SSL
mysql_hex_string() Закодируйте строку в шестнадцатеричном формате
mysql_info() Информация о возвратах о последний раз выполняемом запросе
mysql_init() Получает или инициализирует a MYSQL структура
mysql_insert_id() Возвращает ID, сгенерированный для AUTO_INCREMENT столбец предыдущим запросом
mysql_kill() Уничтожает данный поток
mysql_library_end() Завершите библиотеку API MySQL C
mysql_library_init() Инициализируйте библиотеку API MySQL C
mysql_list_dbs() Имена базы данных возвратов, соответствующие простое регулярное выражение
mysql_list_fields() Имена полей возвратов, соответствующие простое регулярное выражение
mysql_list_processes() Возвращает список текущих потоков сервера
mysql_list_tables() Имена таблиц возвратов, соответствующие простое регулярное выражение
mysql_load_plugin() Загрузите плагин
mysql_load_plugin_v() Загрузите плагин
mysql_more_results() Проверки, существуют ли еще результаты
mysql_next_result() Возвращается/инициирует следующий результат в выполнении многократного результата
mysql_num_fields() Возвращает число столбцов в наборе результатов
mysql_num_rows() Возвращает число строк в наборе результатов
mysql_options() Наборы соединяют опции для mysql_real_connect()
mysql_options4() Наборы соединяют опции для mysql_real_connect()
mysql_ping() Проверки, работает ли соединение с сервером, повторно соединяясь по мере необходимости
mysql_plugin_options() Установите сменную опцию
mysql_query() Выполняет SQL-запрос, определенный как завершенная нулем строка
mysql_real_connect() Соединяется с сервером MySQL
mysql_real_escape_string() Escape специальные символы в строке для использования в SQL-операторе, принимая во внимание текущий набор символов соединения
mysql_real_query() Выполняет SQL-запрос, определенный как считаемая строка
mysql_refresh() Сброс или таблицы сброса и кэши
mysql_reload() Говорит серверу перезагружать таблицы предоставления
mysql_rollback() Откатывает транзакцию
mysql_row_seek() Ищет на смещение строки в наборе результатов, используя значение, возвращенное из mysql_row_tell()
mysql_row_tell() Возвращает позицию курсора строки
mysql_select_db() Выбирает базу данных
mysql_server_end() Завершите библиотеку API MySQL C
mysql_server_init() Инициализируйте библиотеку API MySQL C
mysql_set_character_set() Набор символов значения по умолчанию набора для текущего соединения
mysql_set_local_infile_default() Установите LOAD DATA LOCAL INFILE обратные вызовы обработчика к их значениям по умолчанию
mysql_set_local_infile_handler() Специализированная установка LOAD DATA LOCAL INFILE обратные вызовы обработчика
mysql_set_server_option() Устанавливает опцию для соединения (какmulti-statements)
mysql_sqlstate() Возвращает код ошибки SQLSTATE для последней ошибки
mysql_shutdown() Завершает работу сервера базы данных
mysql_ssl_set() Подготовьтесь устанавливать соединение SSL с сервером
mysql_stat() Возвращает состояние сервера как строку
mysql_store_result() Получает полный набор результатов клиенту
mysql_thread_end() Завершите обработчик потока
mysql_thread_id() Возвращает ID текущего потока
mysql_thread_init() Инициализируйте обработчик потока
mysql_thread_safe() Возвраты 1, если клиенты компилируются как ориентированные на многопотоковое исполнение
mysql_use_result() Инициирует извлечение набора результатов строки строкой
mysql_warning_count() Возвращается предупреждение значат предыдущий SQL-оператор

Прикладные программы должны использовать эту общую схему для того, чтобы взаимодействовать с MySQL:

  1. Инициализируйте библиотеку MySQL, вызывая mysql_library_init(). Эта функция существует в обоих libmysqlclient C клиентская библиотека и libmysqld встроенная библиотека сервера, таким образом, это используется, создаете ли Вы регулярную клиентскую программу, соединяясь с -libmysqlclient флаг, или встроенное серверное приложение, соединяясь с -libmysqld флаг.

  2. Инициализируйте обработчик соединения, вызывая mysql_init() и соединитесь с сервером, вызывая mysql_real_connect().

  3. Выпустите SQL-операторы и обработайте их результаты. (Следующее обсуждение предоставляет больше информации о том, как сделать это.)

  4. Закройте соединение с сервером MySQL, вызывая mysql_close().

  5. Использование конца библиотеки MySQL, вызывая mysql_library_end().

Цель вызвать mysql_library_init() и mysql_library_end() должен обеспечить надлежащую инициализацию и завершение библиотеки MySQL. Для приложений, которые соединяются с клиентской библиотекой, они обеспечивают улучшенное управление памятью. Если Вы не вызываете mysql_library_end(), блок памяти остается выделенным. (Это не увеличивает объем памяти, используемый приложением, но некоторые детекторы утечки памяти будут жаловаться на это.) Для приложений, которые соединяются со встроенным сервером, эти вызовы запускают и останавливают сервер.

В немногопоточной среде, звонке mysql_library_init() может быть опущен, потому что mysql_init() вызовет это автоматически по мере необходимости. Однако, mysql_library_init() не ориентировано на многопотоковое исполнение в многопоточной среде, и таким образом ни один не mysql_init(), который вызывает mysql_library_init(). Следует или вызвать mysql_library_init() до порождения любых потоков, или иначе использования взаимное исключение, чтобы защитить вызов, вызываете ли Вы mysql_library_init() или косвенно через mysql_init(). Это должно быть сделано до любого другого клиентского вызова библиотеки.

Чтобы соединиться с сервером, вызвать mysql_init() чтобы инициализировать обработчик соединения, затем вызовите mysql_real_connect() с тем обработчиком (наряду с другой информацией, такой как имя хоста, имя пользователя, и пароль). На соединение, mysql_real_connect() наборы reconnect флаг (часть MYSQL структура) к значению 1 в версиях API, более старого чем 5.0.3, или 0 в более новых версиях. Значение 1 поскольку этот флаг указывает на это, если оператор не может быть выполнен из-за потерянного соединения, чтобы попытаться повторно соединиться с сервером перед отказом. Можно использовать MYSQL_OPT_RECONNECT опция к mysql_options() управлять поведением пересоединения. Когда Вы делаетесь с соединением, вызвать 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 позволяет клиентам соответственно ответить на операторы (получающий строки только по мере необходимости), не зная, является ли оператор a SELECT. Можно сделать это, вызывая mysql_store_result() после каждого mysql_query() (или mysql_real_query()). Если вызов набора результатов успешно выполняется, оператор был a SELECT и можно считать строки. Если вызов набора результатов перестал работать, вызвать mysql_field_count() определить, состоял ли результат в том, чтобы фактически ожидаться. Если mysql_field_count() нуль возвратов, оператор, возвращенный никакие данные (указание, что это было INSERT, UPDATE, DELETE, и т.д), и, как ожидали, не возвратит строки. Если mysql_field_count() является ненулевым, оператор должен был возвратить строки, но не сделал. Это указывает, что оператор был a SELECT отказавшее. См. описание для mysql_field_count() для примера того, как это может быть сделано.

Оба 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() функции. Они возвращают код ошибки или сообщение об ошибке для последний раз вызванной функции, которая может успешно выполниться или перестать работать, позволяя Вам определить, когда ошибка произошла и каково это было.