Программирование >>  Создание клиентов mysql 

1 ... 107 108 109 [ 110 ] 111 112 113 ... 201


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) ;



1 ... 107 108 109 [ 110 ] 111 112 113 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика