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

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

Жанры

Основы программирования в 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;

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

Проводник

Кораблев Родион
2. Другая сторона
Фантастика:
боевая фантастика
рпг
7.41
рейтинг книги
Проводник

Первый среди равных. Книга II

Бор Жорж
2. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга II

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

Сирийский рубеж 3

Дорин Михаил
7. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж 3

Двойник короля 14

Скабер Артемий
14. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 14

Евреи России. Времена и события. История евреев Российской империи

Кандель Феликс Соломонович
Научно-образовательная:
история
5.00
рейтинг книги
Евреи России. Времена и события. История евреев Российской империи

Первый среди равных. Книга XII

Бор Жорж
12. Первый среди Равных
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга XII

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Мл. сержант. Назад в СССР. Книга 3

Гаусс Максим
3. Второй шанс
Фантастика:
альтернативная история
6.40
рейтинг книги
Мл. сержант. Назад в СССР. Книга 3

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Наследие Маозари 7

Панежин Евгений
7. Наследие Маозари
Фантастика:
боевая фантастика
юмористическое фэнтези
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 7

Эпоха Опустошителя. Том VII

Павлов Вел
7. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том VII

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости