|
Программирование >> Создание клиентов mysql
Клиентские функции 341 if(mysql query(smysql, query)) { fprintf(stderr, Query failed: %s\n , mys ql e rro r(&mys ql)); else { result = mysql store result(Smysql); /* ** Переход на пятнадцатую запись. */ raysql data seek(result,14); row = mysql fetch row(result); /* ** Отображение названия штата. */ printf( %s\n , row[0]); mysql free result(result); mysql close(Smysql); mysql debug() Эта функция включает режим отладки: voi bug (const char *debug) Ей требуется передать строку формата наподобие d: t: 0 lient. trace либо пустую строку. Во втором случае используется переменная среды MYSQLDEBUG. Чтобы эта функция был тупна, необходимо скомпилировать клиентскую библиотеку с включением средств отладки. В MySQL применяется библиотека функций отладки Фреда Фиша (Fred Fish). О ней рассказывается в главе 31, Расширение возможностейMySQL . mysqljdrop db() Эта устаревшая функция полностью удаляет указанную базу данных и все ее таблицы: int raysql drop db(MYSQql, const char *db) Вместо нее рекомендуется 1лать инструкцию DROP DATABASE с помощью функции ** Выборка записи. mysql dump debugJnfo() Эта функция заставляет сервер записывать отладочную информацию в журнальный файл: int mysql dump debug infо (MYSQL *mysql) mysql eof() Эта устаревшая функция проверяет, достигнут ли конец результирующего набора записей: my boo (MYSQL RES *res) Вместо нее предпочтительнее пользоваться кцией mysql fetch row (). mysql errno() Эта функция возвращает код ошибки последней операции: uint inysql errno (MYSQL *mysql) Если ошибок не бтло, возвращается нуль. Список кодов ошибок и соответствующих им сообщений приведен в приложении Г, Коды ошибок MySQL . В листинге 15.5 будет выдано следующее сообщение: Query failed: (1064) You have an error in your SQL syntax near FROM tax at line 1. #include <stdio.h> #include <mysql/mysql.h> in t argc, char *argv[]) { MYSQL mysql; mysql init(Smysql); mysql real connect(Smysql, localhost , freetrade , freetrade , 0, NULL, 0) ; if(mysql query(smysql, SELECT FROM tax )) fprintf(stderr, Query failed: (%d) %s\n , mysql errno(smysql), mysql error(Smysql)); mysql close(smysql); Клиентские функции 343 mysql error() Эта функция воз вращает об ошибке, соответствующее последней опе- рации: char ror{MYSQL *mysql) Если ошибок o, возвращается пустая строка. Список кодов ошибок и соответствующих им сообщений приведен в приложении Г, Коды ошибок MySQL . Пример использования функции mysql error () приводился в листинге 15.5. mysqIjescapejstringO Эта устаревшая функция добавляет к заданной строке символы обратной косой черты, что позволяет использовать строку в SQL-инструкциях: ulong mysql escape string{ char *to, const char *froni, ulong length) Эта функция игнорирует сведения о наборе символов. Вместо нее лучше пользоваться функцией mysql real escape string (). mysqlJetchjfieldQ Эта функция извлекает информацию о столбцах таблицы результатов, по одному зараз: MYSQLFIELD * inysql f etch f ield (MYSQL RES * result) В MySQL хранится внутренний указатель на текущий столбец. Этот указатель изменяется после каждой следующей операции выборки столбца. Когда столбцов не остается, возвращается NULL. Указатель сбрасывается в момент поступления нового запроса. Его можно также изменять вручную с помощью фyнкциипlysql field seek (). Функция mysql fetch field() возвращает структуру MYSQLFIELD, описание которой было приведено выше. В режиме небуферизованного чтения размерность столбцов типа BLOB устанавливается равной 8 Кбайт, а не реальной размерности. Если же результаты запроса заносятся в буфер, учитывается размерность самого большого значения столбца. В листинге 15.6 спомощью функции mysql fetch field() отображается информация о каждом столбце таблицы tax. #include <stdio.h> #include <mysql/mysql.h> int main(int argc, char *argv[]) { MYSQL mysql;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |