1

我有以下 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);

我不确定我要查找的值是否存储在“结果”中,无论是否存在,我怎样才能找到它并将其保存为整数?

4

1 回答 1

5

简短的回答:

int i = atoi(row[0]);

长答案:

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

返回一个 MYSQL_ROW。然后,您必须遍历该行以获取每个值。这些值是字符串,因此您需要将它们转换为 int with 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");
}
于 2013-07-03T15:22:04.703 回答