2013-07-03 2 views
1

У меня есть следующий запрос MySQL, который, когда выполняется в консоли MySQL, показывает правильный результат. Однако я не могу понять, как сохранить результат в переменной в моей программе c.Как сохранить результат запроса MySQL в переменной в c

Вот код, который я печатаю в интерфейс MySQL:

mysql> SELECT id FROM Stations where name = 'AE0'; 

Это то, что она возвращает:

+----+ 
| id | 
+----+ 
| 1 | 
+----+ 

мне нужно выше значение «1», хранящуюся в переменной моя программа c. Запрос MySQL вызывается из моей программы с помощью гр этого кода:

MYSQL_RES *result; 
MYSQL_ROW row; 
length=sprintf(query,"SELECT id FROM Stations where name ='AE0'"); 
myquery(conn,query,length); 
result=mysql_store_result(conn); 
row=mysql_fetch_row(result); 

Я уверен, если значение Я ищу хранится в «результате», является ли это или нет, как я могу найти его и сохранить его в целое число?

ответ

5

короткий ответ:

int i = atoi(row[0]); 

длинный ответ:

http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html

Возвращает MYSQL_ROW. Затем вам нужно пройти через строку, чтобы получить каждое значение. Эти значения являются строками, поэтому вам нужно будет преобразовать их в int с помощью atoi(). Это показано в приведенном ниже кодексе (за исключением звонка atoi()), бесстыдно украденного по ссылке:

MYSQL_ROW row; 
unsigned int num_fields; 
unsigned int i; 

num_fields = mysql_num_fields(result); 
while ((row = mysql_fetch_row(result))) 
{ 
    unsigned long *lengths; 
    lengths = mysql_fetch_lengths(result); 
    for(i = 0; i < num_fields; i++) 
    { 
     printf("[%.*s] ", (int) lengths[i], 
       row[i] ? row[i] : "NULL"); 
    } 
    printf("\n"); 
} 
Смежные вопросы