|
Программирование >> Создание клиентов mysql
MYSQL RES *result; MYSQL FIELD *field; mysql init(Smysql) ; mysql real connect(Smysql, localhost , freetrade , freetrade , 0, NULL, 0); . mysql query(Smysql, SELECT * EROM tax ); result = mysql use result(Smysql); while{(field = mysql fetch field(result))) printf( Name: %s\n , field->name); printf( Table: %s\n , field->table); printf( Default Value: %s\n\n , field->def); mysql free result(result); mysql close (itmysql) ; mysqlJetchJleldjSirectO Эта функция возвращает структуру FIELD с информацией о заданном столбце таблицы результатов: MYSQL FIELD * mysql fetch f ield direct ( MYSQL RES *res, uint fieldnr) Нумерация столбцов начинается с нуля. В остальном данная функция аналогична функции fetch field (). mysql fetch flelds() Эта функция извлекает информацию обо всех столбцах таблицы результатов и возвращает массив структур MYSQL FIELD: MYSQL FIELD ields (MYSQL RES *res) Определить общее количество столбцов в таблице позволяет функция mysql num f ieldM ) Программа, представленная в листинге 15.7, выводит данные о каждом элементе массива столбцов. #include <stdio.h> ttinclude <my3ql/mysql.h> int main(int argc, char *argv[]) { ** Получение информации о столбцах. Клиентские функции 345 MYSQL mysql; MYSQL RES *result; MYSQL ROW row; MYSQL FIELD*field; unsigned int num fields; unsigned long * lengths; unsigned int i; mysql init(smysql); mysql real connect(Smysql, localhost , freetrade* freetrade , 0, null, 0) ; mysql query(smysql, select * from tax ); result = mysql store result(Smysql); row = mysql fetch row(result) ; Получение информации о столбцах. num fields = mysql mm fields (result) ; lengths = mysql fetch lengths(result) ; field = mysql fetch fields(result); for(i =0; i < num fields; i++) { printf( Name: %s\n , field[i].name) ; printf( Table: %s\n , field[i].tbie) ; printf( Default Value: %s\n , field[i].def ? field[i].def ; NULL ); printf( Length: ilu bytes\n\n , lengths[i]); mysql free result(result); mysql close(Smysql) ; mysqlJetchJengthsO Эта функция возвращает массив, в котором указана размерность каждого столбца текущей ulong ngths (MYSQL RES *res) Функции h lengths () предпочтительнее, че en (), так как последняя неправильно определяет длину двоичной строки. В случае ошибки, вызванной наличием неправильного указателя, возвращается NULL. Пример использования данной функции приводился в листинге 15.7. mysqlJetchjrowO Эта функция извлекает следующую запись из указанного набора: MYSQL ROW mysql fetch row(MYSQL RES *res) При достижении конца набора в режиме буферизованного чтения возвращается NULL. В небуферизованном режиме значение NULL является как признаком конца на- бора, так и признаком ошибки. В этом случае необходимо проверить наличие ошибки с помощью функции mysql errno (). Возвращаемое значение можно трактовать как массив значений столбцов. Их число определяет функции fieIds (), а функция mysql f etch lengths () находит длину каждого столбца. В листинге 15.8 запрашиваются значения трех столбцов таблицы user. Обратите внимание на функции tf() во внутреннем цикле. В ней проверяется реальная длина каждого столбца. С помощью оператора ? значения NULL преобразуются в строку NULL . Указатель, содержащийся в массиве row, будет равен NULL, если значение в столбце отсутствует. Если же столбец соде ржит пустую строку, в массиве row будет находиться указатель на пустую строку. #include <string.h> tinclude <mysql/mysql.h> int main(int argc, char *argv[]) { MYSQL mysql; MYSQL RES *result; MYSQLROW row; MYSQL FIELD *field; unsigned int num fields; unsigned long *lengths; unsigned int i; char *col; mysql init(&mysql) ; mysql real connect(smysql, localhost , root , , rrysql , 0, NULL , 0) ; mysql query(smysql, SELECT Host, User, Password FROM user ); result = mysql store result(Smysql); Просмотр результатов. num fields = mysql num fields(result); while(row = mysql fetch row(result)) { lengths = mysql fetch lengths(result); ford = 0; i < num fields; i++) printf( [%.*s] , (int) lengths[i], row[i] ? row[i] : NULL ); printf( \n ); mysql free result(result); mysql close(Smysql) ;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |