mysql_num_rows()
my_ulonglong mysql_num_rows(MYSQL_RES *result)
Описание
Возвращает количество строк в результирующем наборе.
Использование функции mysql_num_rows() зависит от того, какая функция - mysql_store_result() или mysql_use_result() применяется для возвращения результирующего набора. Если используется mysql_store_result() , то функция mysql_num_rows() может вызываться немедленно. Если используется mysql_use_result() ,то функция mysql_num_rows() не будет возвращать правильную величину до тех пор, пока все строки в результирующем наборе не будут извлечены.
Возвращаемые значения
Количество строк в результирующем наборе.
Ошибки
Нет.
mysql_options()
int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)
Описание
Может использоваться для установки дополнительных опций соединения и влияет на режим работы соединения. Эта функция может вызываться многократно для установки нескольких опций.
Функция mysql_options() должна вызываться после функции mysql_init() и перед функцией mysql_connect() или mysql_real_connect() .
Аргумент option представляет собой опцию, которую требуется установить; аргумент arg является величиной этой опции. Если данная опция является целым числом, то аргумент arg должен указывать на величину целого числа.
Возможные значения опций:
Опция | Тип аргумента | Функция | MYSQL_OPT_CONNECT_TIMEOUT | unsigned int | Время ожидания для соединения в секундах. | MYSQL_OPT_COMPRESS | Не используется | Использовать сжатие в клиент-серверном протоколе. | MYSQL_OPT_LOCAL_INFILE | Опциональный указатель на uint | Если указатель не задан или указывает на unsigned int != 0 команда LOAD LOCAL INFILE разрешена. | MYSQL_OPT_NAMED_PIPE | Не используется | Использовать именованные каналы для соединения с сервером MySQL на NT. | MYSQL_INIT_COMMAND | char | Команда для исполнения при подключении к серверу MySQL. При восстановлении соединения будет снова автоматически выполнена. | MYSQL_READ_DEFAULT_FILE | char | Читать опции из указанного файла опций вместо чтения из файла "my.cnf". | MYSQL_READ_DEFAULT_GROUP | char | Читать опции из указанной группы из файла "my.cnf" или из файла заданного в MYSQL_READ_DEFAULT_FILE . |
Следует помнить, что группа client читается всегда при использовании MYSQL_READ_DEFAULT_FILE или MYSQL_READ_DEFAULT_GROUP .
Упомянутая группа в файле опций может содержать следующие опции:
Опция | Описание | connect-timeout | Время ожидания для соединения в секундах. Для Linux это время ожидания используется также для ожидания первого ответа с сервера. | compress | Использовать сжатие в клиент-серверном протоколе. | database | Подключиться к этой базе данных, если никакая база данных не была указана в данной команде подключения. | debug | Опции отладки. | disable-local-infile | Блокировка использования LOAD DATA LOCAL . | host | Имя хоста по умолчанию. | init-command | Команда для исполнения при подключении к серверу MySQL. При восстановлении соединения будет снова автоматически выполнена. | interactive-timeout | Аналогично заданию CLIENT_INTERACTIVE в mysql_real_connect() . См. раздел mysql_real_connect() . | local-infile[=(0|1)] | Если аргумент не задан или указан аргумент != 0 , то разрешено использование LOAD DATA LOCAL . | password | Пароль по умолчанию. | pipe | Использовать именованные каналы для соединения с сервером MySQL на NT. | port | Номер порта по умолчанию. | return-found-rows | Предписывает mysql_info() возвращать найденные строки вместо обновления их при выполнении UPDATE . | socket | Номер сокета по умолчанию. | user | Пользователь по умолчанию. |
Следует помнить, что timeout замещен на connect-timeout , но timeout временно еще работает.
Для более подробной информации о файлах опций см. раздел Файлы параметров "my.cnf".
Возвращаемые значения
Нуль при успешном выполнении. Величина, отличная от нуля, если используется неизвестная опция.
Пример
MYSQL mysql;
mysql_init(&mysql); mysql_options(&mysql,MYSQL_OPT_COMPRESS,0); mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc"); if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) { fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql)); }
Вышеприведенный пример запрашивает клиента использовать сжатый клиент-серверный протокол и читать дополнительные опции из секции odbc в файле "my.cnf".
mysql_ping()
int mysql_ping(MYSQL *mysql)
Описание
Проверяет, работает ли данное соединение с сервером. Если соединение прервано, то пытается автоматически восстановить его.
Эта функция может использоваться клиентами, долгое время находящимися в состоянии простоя, для проверки, закрыл ли сервер данное соединение, и для восстановления соединения при необходимости.
Возвращаемые значения
Нуль, если сервер в активном состоянии. Величина, отличная от нуля, если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
mysql_query()
int mysql_query(MYSQL *mysql, const char *query)
Описание
Выполняет запрос SQL, указанный в аргументе query в виде строки с нулевыми окончаниями. Данный запрос должен состоять из одной команды SQL. Нельзя добавлять к этой команде в качестве завершающих элементов точку с запятой (";") или \g .
Функция mysql_query() не может использоваться для запросов, содержащих двоичные данные; вместо этого необходимо использовать функцию mysql_real_query() (двоичные данные могут содержать символ "\0", который mysql_query() интерпретирует как окончание строки запроса).
Для проверки, вернул данный запрос результирующий набор или нет, можно использовать функцию mysql_field_count() . См. раздел mysql_field_count() .
Возвращаемые значения
Нуль при успешном выполнении запроса. Величина, отличная от нуля, если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)
Описание
Функция mysql_real_connect() пытается установить соединение с сервером баз данных MySQL, работающим на хосте host . До успешного завершения функции mysql_real_connect() нельзя выполнять никакие другие функции интерфейса, за исключением mysql_get_client_info() .
Параметры этой функции указываются следующим образом:
Первым параметром должен быть указатель существующей структуры MYSQL . До вызова функции mysql_real_connect () необходимо вызвать функцию mysql_init() для инициализации данной структуры MYSQL . Вызов функции mysql_options() позволяет изменить многие опции данного соединения. См. раздел mysql_options() .
host может быть как именем хоста, так и IP-адресом. Если host равен NULL или строке "localhost" , то подразумевается соединение с локальным хостом. Если операционная система поддерживает сокеты (Unix) или именованные каналы (Windows), то они используются вместо протокола TCP/IP для соединения с сервером.
Параметр user содержит имя данного пользователя MySQL. Если параметр user равен NULL , то подразумевается текущий пользователь. Под операционной системой Unix, это будет текущее имя входа в систему. Под Windows ODBC имя пользователя должно быть указано явным образом. См. раздел Как заполнять различные поля в Администраторе ODBC.
Параметр passwd содержит пароль для user. Если параметр passwd равен NULL , то только записи в таблице user для пользователя, имеющего чистое (пустое) поле пароля, будут проверяться на совпадение. Это дает возможность администратору базы данных устанавливать систему прав MySQL таким образом, что пользователи получают различные права, в зависимости от того, имеют они или нет установленный пароль. Замечание: не следует пытаться шифровать пароль перед вызовом функции mysql_real_connect() ; шифрование пароля производится автоматически библиотекой.
Параметр db представляет собой имя базы данных. Если параметр db не равен NULL , то данное соединение установит эту величину в качестве базы данных по умолчанию.
Если параметр port не равен 0, то данная величина будет использована в качестве порта для соединения TCP/IP. Следует учитывать, что тип соединения определяется параметром host .
Если параметр unix_socket не равен NULL , то данная строка указывает сокет или именованный канал, который следует использовать. Следует учитывать, что тип соединения определяется параметром host .
Величина параметра client_flag обычно равна 0, но при особых обстоятельствах может быть установлена как комбинация следующих флагов:
Имя флага | Описание флага | CLIENT_COMPRESS | Использовать сжатие в протоколе. | CLIENT_FOUND_ROWS | Возвращать количество найденных (совпавших) строк, а не количество строк, подвергшихся воздействию. | CLIENT_IGNORE_SPACE | Допускать пробелы после имен функций. Сделать имена всех функций зарезервированными словами. | CLIENT_INTERACTIVE | Допускать простой длительностью interactive_timeout секунд (вместо wait_timeout секунд) перед закрытием данного соединения. | CLIENT_NO_SCHEMA | Запретить использование формы db_name.tbl_name.col_name . Это делается для ODBC и заставляет синтаксический анализатор генерировать ошибку при использовании данного синтаксиса, который полезен для выявления ошибок в некоторых программах ODBC. | CLIENT_ODBC | Клиентом является клиент ODBC. Настраивает mysqld для большей совместимости с ODBC. | CLIENT_SSL | Использовать SSL (протокол шифрования). |
Возвращаемые значения
Дескриптор соединения MYSQL , если соединение было успешным, NULL если соединение было неудачным. Для успешного соединения возвращаемая величина та же, что и величина первого параметра.
Ошибки
CR_CONN_HOST_ERROR
Не удалось соединиться с сервером MySQL.
CR_CONNECTION_ERROR
Не удалось соединиться с локальным сервером MySQL.
CR_IPSOCK_ERROR
Не удалось создать IP-сокет.
CR_OUT_OF_MEMORY
Недостаток памяти.
CR_SOCKET_CREATE_ERROR
Не удалось создать Unix сокет.
CR_UNKNOWN_HOST
Не удалось найти IP-адрес для данного имени хоста.
CR_VERSION_ERROR
Несоответствие протокола, что явилось результатом попытки соединения с сервером с клиентской библиотекой, использующей иную версию протокола. Это может произойти при использовании очень старой клиентской библиотеки для подключения к новому серверу, при запуске которого не была установлена опция --old-protocol .
CR_NAMEDPIPEOPEN_ERROR
Не удалось создать именованный канал на Windows.
CR_NAMEDPIPEWAIT_ERROR
Не удалось дождаться именованного канала на Windows.
CR_NAMEDPIPESETSTATE_ERROR
Не удалось получить обработчик канала на Windows.
CR_SERVER_LOST
Если connect_timeout > 0 и требовалось больше, чем connect_timeout секунд для соединения с сервером или если сервер прекратил работу во время выполнения init-command.
Пример
MYSQL mysql;
mysql_init(&mysql); mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name"); if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) { fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql)); }
Используя функцию mysql_options() , библиотека MySQL будет читать секции [client] и your_prog_name в конфигурационном файле "my.cnf", что будет гарантировать нормальную работу данной программы, даже если MySQL будет установлен нестандартным образом.
Следует заметить, что во время соединения функция mysql_real_connect() устанавливает флаг reconnect (часть данной структуры MYSQL) в значение, равное 1. Этот флаг показывает, что в случае, если запрос не может быть выполнен из-за потери соединения, то следует попытаться восстановить соединение прежде, чем отказаться от него.
1 2 3 4 5 6
8 8 8
| |