我有以下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);
我不确定我正在寻找的值是否存储在'结果'中,无论是否存在,我如何找到它并将其保存为整数?
答案 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");
}