MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 8 Интерфейсы для MySQL
    • 8.1 Интерфейс PHP API для MySQL
    • 8.2 Интерфейс Perl API для MySQL
    • 8.3 Поддержка ODBC в MySQL
    • 8.4 Интерфейс C для MySQL
      • 8.4.1 Типы данных C API
      • 8.4.2 Обзор функций интерфейса C
      • 8.4.3 Описание функций интерфейса C
      • 8.4.4 Описания функций C, связанных с потоками
      • 8.4.5 Описания функций C, доступных во встраиваемом сервере
      • 8.4.6 Основные вопросы и проблемы в использовании интерфейса C
      • 8.4.7 Сборка клиентских программ
      • 8.4.8 Как создать клиентскую программу с потоками
      • 8.4.9 libmysqld, встраиваемая библиотека сервера MySQL
    • 8.5 Интерфейсы C++
    • 8.6 Взаимодействие MySQL и Java (JDBC)
    • 8.7 Интерфейсы Python API для MySQL
    • 8.8 Интерфейсы Tcl API для MySQL
    • 8.9 Оболочка Eiffel для MySQL

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

8.4 Интерфейс C для MySQL

Исходный код программного интерфейса (API) C распространяется вместе с MySQL. Он включает в себя библиотеку mysqlclient и обеспечивает возможность доступа к базе данных программам на С.

Многие клиенты исходного дистрибутива MySQL написаны на C. Они являются хорошими примерами для демонстрации использования интерфейса C. Их можно найти их в каталоге clients исходного дистрибутива MySQL.

Большинство других клиентских интерфейсов (за исключением Java) для соединения с сервером MySQL используют библиотеку mysqlclient. Это означает, что, например, можно извлечь определенную выгоду, используя те же переменные окружения, что и в других клиентских программах, поскольку на них есть ссылки из библиотеки (see section 4.8 Клиентские сценарии и утилиты MySQL, где приведен список этих переменных).

Клиент имеет максимальный размер буфера связи. Начальный размер этого буфера составляет 16 Kб и автоматически увеличивается до максимального значения 16 Mб. Поскольку размеры буфера увеличиваются только при подтверждении запроса на это, то просто увеличение максимального предела по умолчанию само по себе не обеспечит увеличения используемых ресурсов. Проверка этого размера в основном используется для ошибочных запросов и коммуникационных пакетов.

Буфер связи должен быть достаточно большим, чтобы вмещать целую SQL-команду (для потока клиент-сервер) и целую строку возвращенных данных (для потока сервер-клиент). Буфер связи для каждого из потоков динамически увеличивается до максимального значения, чтобы обработать любой запрос или строку. Например, для данных типа BLOB объемом до 16 Mб необходим предел буфера связи по меньшей мере в 16 Mб (как для сервера, так и для клиента). Максимальное значение по умолчанию для клиента составляет 16 Mб, а для сервера максимум по умолчанию равен 1Mб. Можно увеличить этот объем, изменив величину параметра max_allowed_packet при запуске сервера (see section 5.5.2 Настройка параметров сервера).

Сервер MySQL сжимает каждый буфер связи до величины net_buffer_length байтов после каждого запроса. Для клиентов размер буфера, связанного с соединением, не уменьшается, пока не будет закрыто данное соединение и при этом не будет освобождена выделенная клиенту память.

Программирование с учетом потоков описано в разделе See section 8.4.8 Как создать клиентскую программу с потоками. При создании автономного приложения, включающего и "сервер", и "клиент" в одной и той же программе (и не взаимодействующего с внешним сервером MySQL), обращайтесь к разделу See section 8.4.9 libmysqld, встраиваемая библиотека сервера MySQL.

Главы

  • 8.4.1 Типы данных C API
  • 8.4.2 Обзор функций интерфейса C
  • 8.4.3 Описание функций интерфейса C
    • 8.4.3.1 mysql_affected_rows()
    • 8.4.3.6 mysql_change_user()
    • 8.4.3.11 mysql_character_set_name()
    • 8.4.3.15 mysql_close()
    • 8.4.3.19 mysql_connect()
    • 8.4.3.23 mysql_create_db()
    • 8.4.3.28 mysql_data_seek()
    • 8.4.3.32 mysql_debug()
    • 8.4.3.37 mysql_drop_db()
    • 8.4.3.42 mysql_dump_debug_info()
    • 8.4.3.46 mysql_eof()
    • 8.4.3.51 mysql_errno()
    • 8.4.3.55 mysql_error()
    • 8.4.3.59 mysql_escape_string()
    • 8.4.3.60 mysql_fetch_field()
    • 8.4.3.65 mysql_fetch_field_direct()
    • 8.4.3.70 mysql_fetch_fields()
    • 8.4.3.75 mysql_fetch_lengths()
    • 8.4.3.80 mysql_fetch_row()
    • 8.4.3.85 mysql_field_count()
    • 8.4.3.90 mysql_field_seek()
    • 8.4.3.94 mysql_field_tell()
    • 8.4.3.98 mysql_free_result()
    • 8.4.3.102 mysql_get_client_info()
    • 8.4.3.106 mysql_get_host_info()
    • 8.4.3.110 mysql_get_proto_info()
    • 8.4.3.114 mysql_get_server_info()
    • 8.4.3.118 mysql_info()
    • 8.4.3.122 mysql_init()
    • 8.4.3.126 mysql_insert_id()
    • 8.4.3.130 mysql_kill()
    • 8.4.3.134 mysql_list_dbs()
    • 8.4.3.138 mysql_list_fields()
    • 8.4.3.142 mysql_list_processes()
    • 8.4.3.146 mysql_list_tables()
    • 8.4.3.150 mysql_num_fields()
    • 8.4.3.155 mysql_num_rows()
    • 8.4.3.159 mysql_options()
    • 8.4.3.163 mysql_ping()
    • 8.4.3.167 mysql_query()
    • 8.4.3.171 mysql_real_connect()
    • 8.4.3.176 mysql_real_escape_string()
    • 8.4.3.181 mysql_real_query()
    • 8.4.3.185 mysql_reload()
    • 8.4.3.189 mysql_row_seek()
    • 8.4.3.193 mysql_row_tell()
    • 8.4.3.197 mysql_select_db()
    • 8.4.3.201 mysql_shutdown()
    • 8.4.3.205 mysql_stat()
    • 8.4.3.209 mysql_store_result()
    • 8.4.3.213 mysql_thread_id()
    • 8.4.3.217 mysql_use_result()
  • 8.4.4 Описания функций C, связанных с потоками
    • 8.4.4.1 my_init()
    • 8.4.4.4 mysql_thread_init()
    • 8.4.4.7 mysql_thread_end()
    • 8.4.4.10 mysql_thread_safe()
  • 8.4.5 Описания функций C, доступных во встраиваемом сервере
    • 8.4.5.1 mysql_server_init()
    • 8.4.5.5 mysql_server_end()
  • 8.4.6 Основные вопросы и проблемы в использовании интерфейса C
    • 8.4.6.1 Почему после успешных возвратов функции mysql_query() функция mysql_store_result() иногда возвращает NULL?
    • 8.4.6.2 Какие результаты можно получить из запроса?
    • 8.4.6.3 Как получить уникальный идентификатор для последней внесенной строки?
    • 8.4.6.4 Проблемы линкования с интерфейсом C
  • 8.4.7 Сборка клиентских программ
  • 8.4.8 Как создать клиентскую программу с потоками
  • 8.4.9 libmysqld, встраиваемая библиотека сервера MySQL
    • 8.4.9.1 Обзор библиотеки встраиваемого сервера MySQL
    • 8.4.9.2 Компиляция программ с libmysqld
    • 8.4.9.3 Ограничения при использовании встраиваемого сервера MySQL
    • 8.4.9.4 Использование файлов опций с встраиваемым сервером
    • 8.4.9.5 Что осталось сделать по встраиваемомуому серверу (TODO)
    • 8.4.9.6 Пример простого встраиваемого сервера
    • 8.4.9.7 Лицензирование встраиваемого сервера

User Comments

Posted by [name withheld] on Wednesday December 18 2002, @5:54pm[Delete] [Edit]

Just to let you guys know that there is a very good
book sample chapter [Programming the MySQL C
API] on the Developers Resources Web site.

http://www.developers-resources.com/stories/02/10/19/5355896 />
It does a very good job at covering this some what
complex topic in some detail. A PDF version of the
sample chapter may also be downloaded.

Greg

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.