Получать числа напрямую, используя MySQL C API - PullRequest
2 голосов
/ 21 марта 2012

Я использую MySQL C API с C ++ для подключения к базе данных.Я хотел бы выбрать несколько номеров из базы данных.

Есть ли способ выбрать числовые типы, такие как INTEGER или DOUBLE, в нативные типы C, такие как int или double, без необходимости разбирать их из строки?

EDIT: Как насчет ENUM?Я бы не хотел делать strcmp каждый раз вместо использования switch.

Ответы [ 2 ]

4 голосов
/ 23 марта 2012

Спасибо, но на самом деле я думаю, что нашел способ найти что-то другое ...

Подготовленные заявления могут сделать работу. При выборе данных результаты сохраняются в MYSQL_BIND, как и подготовленные аргументы оператора. И в MYSQL_BIND значения хранятся как нативные типы Си. Я думаю, что эти ссылки полезны:

http://lgallardo.com/en/2011/06/23/sentencias-preparadas-de-mysql-en-c-ejemplo-completo/ http://dev.mysql.com/doc/refman/5.5/en/mysql-stmt-fetch.html#id1363684

0 голосов
/ 22 марта 2012

Я не верю в это - насколько я знаю, все возвращается как символ *, который затем вы можете интерпретировать.

Если вы выбираете значения, относящиеся к перечислению, используйте

int res = atoi(row[0])

тогда

switch(res)
{
case ENUM_VAL_1:
break;
}

Для двойников используйте что-то вроде strtod () для преобразования из char *. (Это также проверяет на отсутствие номеров)

...