基本上,您调用mysql_store_result()或mysql_use_result()来访问结果集,前者将所有行装载到客户端的内存中,后者从服务器一次访问一行。如果你使用mysql_use_result(),你需要调用mysql_fetch_row()来访问每一行,直到函数返回NULL。每次成功调用mysql_fetch_row()都会返回一个MYSQL_ROW,您可以使用它来访问各个字段值。
由于字段是不是空终止的,你需要使用mysql_fetch_lengths()来获得每个字段的长度,这样就可以通过memcpy的其他地方复制它们,等
由于字段值如果你想将它作为一个字符串使用,你将需要添加你自己的NUL字符。请注意,字段值可能包含二进制数据,因此如果您将其视为字符串,那么期望C字符串的函数将在数据遇到空字符时停止处理数据。
下面是从文档的例子,应该帮助你把这个放在一起:
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");
}
感谢,所以我可以得到的长度,但是如果我要得到的东西,被存储为VARCHAR数据库?这是否意味着我不能在结果中使用strcmp? – Steve 2008-11-07 01:24:36