Описание функций интерфейса C
В приведенных здесь описаниях параметр или возвращаемая величина, обозначенная как NULL , означает NULL в терминах языка программирования C, а не величину NULL в MySQL.
Функции, возвращающие величину, обычно возвращают указатель или целое число. Если не указано иначе, то функции, возвращающие указатель, возвращают величину не-NULL при успешном выполнении или величину NULL , указывающую на ошибку, а функции, возвращающие целое число, возвращают нуль при успешном выполнении или ненулевую величину при возникновении ошибки. Следует учитывать, что термин "ненулевая величина" означает именно это. Если в описании функции не сказано иначе, то не следует пробовать интерпретировать эту величину иначе, чем нуль:
if (result) /* правильно */ ... error ... if (result < 0) /* неправильно */ ... error ... if (result == -1) /* неправильно */ ... error ...
Если функция возвращает ошибку, то возможные типы ошибок представлены в ее описании в подраздел Ошибки. Вызвав функцию mysql_errno() , можно узнать, какие именно ошибки произошли. Строковое представление ошибки можно получить, вызывая функцию mysql_error() .
mysql_affected_rows()
my_ulonglong mysql_affected_rows(MYSQL *mysql)
Описание
Возвращает количество строк, измененных последней командой UPDATE , удаленных последней командой DELETE или вставленных последней командой INSERT . Может быть вызвана немедленно после mysql_query() для команд UPDATE , DELETE или INSERT . Для команд SELECT mysql_affected_rows() работает аналогично mysql_num_rows() .
Возвращаемые значения
Целое число больше нуля равно количеству строк, подвергшихся воздействию или извлеченных. Нуль указывает, что ни одна из записей не была обновлена для команды UPDATE , ни одна из строк не совпала с утверждением WHERE в данном запросе или что ни один запрос еще не был выполнен. Значение -1 показывает, что данный запрос возвратил ошибку или что для запроса SELECT функция mysql_affected_rows() была вызвана прежде вызова функции
mysql_store_result() .
Ошибки Нет.
Пример
mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10"); printf("%ld products updated",(long) mysql_affected_rows(&mysql));
Если указывается флаг CLIENT_FOUND_ROWS при подключении к mysqld , то mysql_affected_rows() возвратит количество строк, соответствующих выражению WHERE для команд UPDATE .
Следует отметить, что при использовании команды REPLACE функция mysql_affected_rows() возвратит значение 2, если новая строка заменила старую. Это происходит по той причине, что в данном случае одна строка была внесена и затем дублирующая была удалена.
mysql_change_user()
my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db)
Описание
Изменяет пользователя и устанавливает базу данных, указанную в аргументе db в качестве текущей по базы данных для соединения, заданного в аргументе mysql . В последующих запросах эта база данных является текущей по умолчанию для табличных ссылок, которые не содержат явного указателя базы данных.
Эта функция была введена в версию MySQL 3.23.3.
Функция mysql_change_user() не выполняется, если подключенный пользователь не может быть аутентифицирован или если он не имеет разрешения на использование этой базы данных. В таком случае данный пользователь и база данных не изменяются.
Параметр db может быть установлен в NULL , если база данных по умолчанию не нужна.
Возвращаемые значения
Нуль при успешном выполнении. Ненулевая величина, если возникла ошибка.
Ошибки
Те же, что и для mysql_real_connect() .
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
ER_UNKNOWN_COM_ERROR
Сервер MySQL не обеспечивает выполнение этой команды (возможно, старая версия сервера)
ER_ACCESS_DENIED_ERROR
Пользователь или пароль ошибочны.
ER_BAD_DB_ERROR
Данная база данных не существует.
ER_DBACCESS_DENIED_ERROR
Данный пользователь не имеет прав доступа к этой базе данных.
ER_WRONG_DB_NAME
Имя базы данных было слишком длинным.
Пример
if (mysql_change_user(&mysql, "user", "password", "new_database")) { fprintf(stderr, "Failed to change user. Error: %s\n", mysql_error(&mysql)); }
mysql_character_set_name()
const char *mysql_character_set_name(MYSQL *mysql)
Описание
Возвращает установленную кодировку для текущего подключения.
Возвращаемые значения
Кодировка, установленная по умолчанию.
Ошибки
Нет.
mysql_close()
void mysql_close(MYSQL *mysql)
Описание
Закрывает ранее открытое соединение. Функция mysql_close() также освобождает дескриптор данного соединения, указанный в mysql , если данный дескриптор был выделен автоматически функциями mysql_init() или mysql_connect() .
Возвращаемые значения
Нет.
Ошибки
Нет.
mysql_connect()
MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)
Описание
Данная функция не рекомендуется. Вместо нее предпочтительно использовать функцию mysql_real_connect() .
mysql_connect() пытается установить соединение с сервером баз данных MySQL , работающим на хосте host . До успешного завершения функции mysql_connect() нельзя выполнять никакие другие функции интерфейса, за исключением mysql_get_client_info() .
Значения параметров являются теми же самыми, что и для соответствующих параметров функции mysql_real_connect() , с той разницей, что параметр соединения может быть NULL . В этом случае интерфейс C автоматически выделяет память для структуры соединения и освобождает ее при вызове функции mysql_close() . Недостаток данного подхода состоит в том, что при падении соединения нельзя получить сообщение об ошибке (чтобы получить информацию об ошибке из функций mysql_errno() или mysql_error() , необходимо обеспечить адекватный указатель структуры MYSQL).
Возвращаемые значения
Те же, что и для mysql_real_connect() .
Ошибки
Те же, что и для mysql_real_connect() .
1 2 3 4 5 6
8 8 8
| |