Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

Типов столбца огромное множество. Полный перечень можно найти в файле mysql_com.h и в документации.

К самым распространенным относятся следующие:

FIELD_TYPE_DECIMAL

FIELD_TYPE_LONG

FIELD_TYPE_STRING

FIELD_TYPE_VAR_STRING

Далее приведен особенно полезный макрос

IS_NUM
, возвращающий значение
true
, если тип поля числовой:

if (IS_NUM(myslq_field_ptr->type)) printf("Numeric type field\n");

Прежде чем обновлять вашу программу, следует упомянуть еще одну функцию:

MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES* result,

 MYSQL_FIELD_OFFSET offset);

Ее можно использовать для переопределения текущего номера поля, который автоматически увеличивается при каждом вызове

mysql_fetch_field
. Если передать нулевое смещение, вы вернетесь назад к первому столбцу.

Теперь, имея всю необходимую информацию для написания программы выборки, покажите все дополнительные данные, относящиеся к заданному столбцу.

Далее приведена программа select4.c, которую мы воспроизводим полностью, чтобы у вас был полный пример для изучения. В программе нет расширенного анализа типов столбцов, в ней только демонстрируются требуемые основные правила.

#include <stdlib.h>

#include <stdio.h>

#include "mysql.h"

MYSQL my_connection;

MYSQL_RES *res_ptr;

MYSQL_ROW sqlrow;

void display_header;

void display_row;

int main(int argc, char *argv[]) {

 int res;

 int first_row = 1; /* Применяется для гарантии того,

что мы выводим заголовок строки точно один раз,

когда данные успешно извлечены */

 mysql_init(&my_connection);

 if (mysql_real_connect(&my_connection, "localhost", "rick",

"secret", "foo", 0, NULL, 0)) {

printf("Connection success\n");

res = mysql_query(&my_connection,

"SELECT childno, fname, age FROM children WHERE age > 5");

if (res) {

fprintf(stderr, "SELECT error: %s\n", mysql_error(&my_connection));

} else {

res_ptr = mysql_use_result(&my_connection);

if (res_ptr) {

while ((sqlrow = mysql_fetch_row(res_ptr))) {

if (first_row) {

display_header;

first_row = 0;

}

display_row;

}

if (mysql_errno(&my_connection)) {

fprintf(stderr, "Retrieve error: %s\n", mysql_error(&my_connection));

}

mysql_free_result(res_ptr);

}

}

mysql_close(&my_connection);

 } else {

fprintf(stderr, "Connection failed\n");

if (mysql_errno(&my_connection)) {

fprintf(stderr, "Connection error %d: %s\n",

mysql_errno(&my_connection), mysql_error(&my_connection))

}

 }

 return EXIT_SUCCESS;

}

void display_header {

 MYSQL_FIELD *field_ptr;

 printf("Column details:\n");

 while ((field_ptr = mysql_fetch_field(res_ptr)) != NULL) {

printf("\t Name: %s\n", field_ptr->name);

printf("\t Type: ");

if (IS_NUM(field_ptr->type)) {

printf("Numeric field\n");

} else {

switch(field_ptr->type) {

case FIELD_TYPE_VAR_STRING:

printf("VARCHAR\n");

break;

case FIELD_TYPE_LONG:

printf("LONG\n");

break;

default:

printf("Type is %d, check in mysql_com.h\n", field_ptr->type);

} /* switch */

} /* else */

printf("\t Max width %ld\n", field_ptr->length);

if (field_ptr->flags & AUTO_INCREMENT_FLAG)

printf("\t Auto increments\n");

printf("\n");

 } /* while */

}

void display_row {

 unsigned int field_count;

 field_count = 0;

Поделиться:
Популярные книги

Бастард Бога (Дилогия)

Матвеев Владимир
Фантастика:
альтернативная история
5.11
рейтинг книги
Бастард Бога (Дилогия)

Журнал «Если», 2002 № 08

Андерсон Кевин Джей
114. Журнал Если
Фантастика:
научная фантастика
5.00
рейтинг книги
Журнал «Если», 2002 № 08

Города в полете

Блиш Джеймс Бенджамин
Фантастика:
космическая фантастика
4.25
рейтинг книги
Города в полете

Газлайтер. Том 31

Володин Григорий Григорьевич
31. История Телепата
Фантастика:
боевая фантастика
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Газлайтер. Том 31

Убивая маску

Метельский Николай Александрович
13. Унесенный ветром
Фантастика:
боевая фантастика
5.75
рейтинг книги
Убивая маску

Российские фантасмагории (сборник)

Булгаков Михаил Афанасьевич
Юмор:
юмористическая проза
5.00
рейтинг книги
Российские фантасмагории (сборник)

Барон

Первухин Андрей Евгеньевич
5. Ученик
Фантастика:
фэнтези
5.60
рейтинг книги
Барон

Снайпер

Поселягин Владимир Геннадьевич
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Снайпер

Телохранитель Генсека. Том 1

Алмазный Петр
1. Медведев
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Телохранитель Генсека. Том 1

Ратник

Ланцов Михаил Алексеевич
3. Помещик
Фантастика:
альтернативная история
7.11
рейтинг книги
Ратник

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Жена неверного ректора Полицейской академии

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного ректора Полицейской академии

Очерки времен и событий из истории российских евреев. 1945 – 1970 гг. Книга 6

Кандель Феликс Соломонович
Научно-образовательная:
история
5.00
рейтинг книги
Очерки времен и событий из истории российских евреев. 1945 – 1970 гг. Книга 6

Древесный маг Орловского княжества

Павлов Игорь Васильевич
1. Орловское княжество
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества