如何将MySQL查询结果保存到c中的变量中

时间:2013-07-03 15:19:14

标签: mysql c

我有以下MySQL查询,在MySQL控制台中完成后会显示正确的结果。我无法弄清楚如何将结果存储到我的c程序中的变量中。

这是我在MySQL界面中输入的代码:

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

这就是它的回报:

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

我需要将上述值'1'存储到我的c程序中的变量中。使用以下代码从我的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);

我不确定我正在寻找的值是否存储在'结果'中,无论是否存在,我如何找到它并将其保存为整数?

1 个答案:

答案 0 :(得分:5)

简短回答:

int i = atoi(row[0]);

答案很长:

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

返回MYSQL_ROW。然后,您必须遍历该行以获取每个值。这些值是字符串,因此您需要使用atoi()将它们转换为int。以下代码中证明了这一点(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");
}