gpt4 book ai didi

MySQL C API 使用结果

转载 作者:行者123 更新时间:2023-11-29 01:48:16 25 4
gpt4 key购买 nike

我正在使用 MySQL C API 查询数据库,并将结果存储在 MYSQL_ROW 类型中。我可以使用

将结果打印到控制台
printf("%s", row[0]);

但是,根据 MySQL C API 文档,我不能将它们用作以 null 结尾的字符串。

the function overview的底部,他们说我可以使用 mysql_store_result()mysql_use_result()“提取”信息。但是,我仍然对如何做到这一点感到困惑。

理想情况下,我想将结果用作字符串,这样我就可以执行类似 strcmp 的操作,但除此之外,我肯定需要以某种方式将这些信息用于这两个函数。

谁能给我举个例子说明如何做到这一点?

最佳答案

基本上,您调用 mysql_store_result() 或 mysql_use_result() 来访问结果集,前者将所有行加载到客户端的内存中,后者从服务器一次访问一个行。如果使用 mysql_use_result(),则需要调用 mysql_fetch_row() 来访问每一行,直到函数返回 NULL。每次成功调用 mysql_fetch_row() 都会返回一个 MYSQL_ROW,您可以使用它来访问各个字段值。

由于字段不是以 nul 结尾的,您需要使用 mysql_fetch_lengths() 来获取每个字段的长度,以便您可以通过 memcpy 等将它们复制到其他地方。

由于字段值不是以 nul 结尾的,因此如果您想将其用作字符串,则在制作副本时需要添加自己的 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");
}

关于MySQL C API 使用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/270940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com