Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Интерфейсы для MySQL /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Интерфейс C для MySQL (окончание) - Программирование от RIN.RU
Интерфейс C для MySQL (окончание)



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  Обсудить в чате

8  В тему

Интерфейс PHP API для MySQL

Интерфейс Perl API для MySQL

Поддержка ODBC в MySQL

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

Интерфейсы C++ и не только

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь