MsqICIose
msqICIose
int msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnect
int msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchField
m_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRow
m_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResult
void msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBs
m_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFields
m_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndex
m_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTables
m_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRows
int msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQuery
int msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDB
int msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResult
m_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPI
API для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeek
void msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeek
void msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFields
int msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro ws
my_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin g
unsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf о
unsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_close
void mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connect
MYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_db
int mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seek
void mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debug
mysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_db
int mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_info
int mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eof
my_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errno
unsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_error
char *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field
mysql_fetch_field
MYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_field_direct
mysql_fetch_field_direct
MYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_fields
mysql_fetch_fields
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengths
unsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_row
MYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seek
MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tell
MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_result
void mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_info
char *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfo
char *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_info
char *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_init
MYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_kill
int mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbs
MYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fields
MYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processes
MYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tables
MYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fields
unsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rows
int mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_ping
int mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_query
int mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connect
MYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
Имя хоста или IP-адрес сервера баз данных MySQL (для локального подключения к серверу MySQL через сокет Unix можно использовать пустую строку или localhost).
Имя пользователя, используемое при подключении к серверу баз данных (пустой строкой можно указать на использование логина пользователя, запустившего клиента).
Пароль, используемый для идентификации указанного пользователя. Если используется пустая строка, будет производиться аутентификация только пользователей без пароля.
Начальная база данных, используемая при подключении (чтобы не выбирать при подключении начальную базу данных, можно передать пустую строку).
Порт, используемый для удаленного подключения к серверу баз данных MySQL по протоколу TCP (чтобы принять порт по умолчанию, можно передать 0).
Имя сокета Unix для подключения к серверу на локальном компьютере (чтобы принять сокет по умолчанию, можно использовать пустую строку).
Ноль или более из набора флагов, используемых при особых обстоятельствах:
CLIENT_FOUND_ROWS
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_query
int mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reload
int mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tell
unsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С API
MySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_db
int mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdown
int mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_stat
char *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_result
MYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_id
unsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_result
MYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfo
char *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjd
my_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример
/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
Теперь подключение должно быть завершено
Пример
mysql_close(&mysql);
/* Теперь подключение должно быть завершено */
к локальному серверу MySQL, используя
Пример
/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
Создать новую базу данных
Пример
/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
к последней записи
Пример
/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
Это обычное использование отладочной библиотеки.
Пример
/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
Уничтожить базу данных
Пример
/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Пример
result = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример
/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
HoMep последней ошибки:
Пример
error = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Пример
printf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Пример
char name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
Пример
MYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
Пример
MYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
Пример
MYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Пример
unsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
Пример
MYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
Пример
MYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
Пример
MYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Выполнить операции
Пример
MYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Пример
printf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Пример
print("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Пример
printf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Пример
printf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример
/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
Пример
MYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример
/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример
/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
Пример
MYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
теперь содержит имена всех полей
Пример
MYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
Пример
MYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
Пример
MYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Пример
num_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Пример
num_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Пример
while(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Пример
error = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример
/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Пример
error = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Пример
result = mysql_reload(&mysql);
в любой момент
Пример
saved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Пример
result = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Пример
result = mysql_shutdown(&mysql);
о сервере
Пример
printf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
Пример
MYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Пример
thread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
Пример
MYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример
/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример
/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Пример
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
К данным из этого запроса
Пример
m_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Пример
m_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Пример
m_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Пример
m_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Пример
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Пример
m_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Пример
m_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Пример
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Пример
dbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Пример
databases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
содержит теперь имена всех таблиц
Пример
tables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Пример
fields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Пример
index = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Типы данных
Типы данных
MYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию «курсора» в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.